aboutsummaryrefslogtreecommitdiff
path: root/new-luxc/source/luxc/eval.lux
blob: 266becee69960b1593dbec02bddc9cb977fa32a7 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
(;module:
  lux
  (lux (control [monad #+ do])
       [macro])
  [../base]
  (.. [analyser]
      [synthesizer]
      (generator [expr]
                 [eval])))

(def: #export (eval type exprC)
  ../base;Eval
  (do macro;Monad<Lux>
    [exprA (../base;with-expected-type type
             (analyser;analyser eval exprC))
     #let [exprS (synthesizer;synthesize exprA)]]
    (eval;eval (expr;generate exprS))))