(;module: lux (lux (control [monad #+ do]) [meta]) (luxc (lang (analysis [";A" expression]) (synthesis [";S" expression]))) [../base] (.. (generator [";G" expression] [eval]))) (def: #export (eval type exprC) ../base;Eval (do meta;Monad [exprA (../base;with-expected-type type (expressionA;analyser eval exprC)) #let [exprS (expressionS;synthesize exprA)] exprI (expressionG;generate exprS)] (eval;eval exprI)))