(;module: lux (lux (control [monad #+ do]) [macro]) [../base] (.. [analyser] [synthesizer] (generator [expr] [eval]))) (def: #export (eval type exprC) ../base;Eval (do macro;Monad [exprA (../base;with-expected-type type (analyser;analyser eval exprC)) #let [exprS (synthesizer;synthesize exprA)]] (eval;eval (expr;generate exprS))))