blob: 62d6a438b8cacf12dc9fba7f1c5dc395bce6977c (
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)))
|