blob: e691ec7a1dac91b48968422c01b6a8d9c6d743a1 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
(;module:
lux
(lux (control [monad #+ do])
[macro])
(luxc ["&" lang]
(lang (analysis [";A" expression])
(synthesis [";S" expression])
(translation [";T" expression]
[";T" eval]))))
(def: #export (eval type exprC)
&;Eval
(do macro;Monad<Meta>
[exprA (&;with-type type
(expressionA;analyser eval exprC))
#let [exprS (expressionS;synthesize exprA)]
exprI (expressionT;translate exprS)]
(evalT;eval exprI)))
|