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