aboutsummaryrefslogtreecommitdiff
path: root/new-luxc/source/luxc/synthesizer
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--new-luxc/source/luxc/synthesizer.lux47
-rw-r--r--new-luxc/source/luxc/synthesizer/loop.lux7
-rw-r--r--new-luxc/source/luxc/synthesizer/variable.lux4
3 files changed, 30 insertions, 28 deletions
diff --git a/new-luxc/source/luxc/synthesizer.lux b/new-luxc/source/luxc/synthesizer.lux
index 7bee8fe58..651da82a7 100644
--- a/new-luxc/source/luxc/synthesizer.lux
+++ b/new-luxc/source/luxc/synthesizer.lux
@@ -1,10 +1,11 @@
(;module:
lux
- (lux (data text/format
+ (lux (data [maybe]
[number]
[product]
- (coll [list "L/" Functor<List> Fold<List> Monoid<List>]
- ["d" dict])))
+ text/format
+ (coll [list "list/" Functor<List> Fold<List> Monoid<List>]
+ [dict #+ Dict])))
(luxc ["&" base]
(lang ["la" analysis]
["ls" synthesis])
@@ -15,7 +16,7 @@
))
(def: init-env (List ls;Variable) (list))
-(def: init-resolver (d;Dict Int Int) (d;new number;Hash<Int>))
+(def: init-resolver (Dict Int Int) (dict;new number;Hash<Int>))
(def: (prepare-body inner-arity arity body)
(-> Nat Nat ls;Synthesis ls;Synthesis)
@@ -43,7 +44,7 @@
[#la;Definition #ls;Definition])
(#la;Product _)
- (#ls;Tuple (L/map (recur +0 resolver num-locals) (&&structure;unfold-tuple exprA)))
+ (#ls;Tuple (list/map (recur +0 resolver num-locals) (&&structure;unfold-tuple exprA)))
(#la;Sum choice)
(let [[tag last? value] (&&structure;unfold-variant choice)]
@@ -55,14 +56,14 @@
(if (&&function;nested? outer-arity)
(if (n.= +0 register)
(#ls;Call (|> (list;n.range +1 (n.dec outer-arity))
- (L/map (|>. &&function;to-local #ls;Variable)))
+ (list/map (|>. &&function;to-local #ls;Variable)))
(#ls;Variable 0))
(#ls;Variable (&&function;adjust-var outer-arity (&&function;to-local register))))
(#ls;Variable (&&function;to-local register)))
(#;Captured register)
(#ls;Variable (let [var (&&function;to-captured register)]
- (default var (d;get var resolver)))))
+ (maybe;default var (dict;get var resolver)))))
(#la;Case inputA branchesA)
(let [inputS (recur +0 resolver num-locals inputA)]
@@ -88,9 +89,9 @@
#ls;ExecP
(#ls;SeqP (&&case;path pattern)))))]
(#ls;Case inputS
- (L/fold &&case;weave
- (transform-branch lastP lastA)
- (L/map (product;uncurry transform-branch) prevsPA))))
+ (list/fold &&case;weave
+ (transform-branch lastP lastA)
+ (list/map (product;uncurry transform-branch) prevsPA))))
_
(undefined)
@@ -99,21 +100,21 @@
(#la;Function scope bodyA)
(let [inner-arity (n.inc outer-arity)
raw-env (&&function;environment scope)
- env (L/map (function [var] (default var (d;get var resolver))) raw-env)
+ env (list/map (function [var] (maybe;default var (dict;get var resolver))) raw-env)
env-vars (let [env-size (list;size raw-env)]
(: (List ls;Variable)
(case env-size
+0 (list)
- _ (L/map &&function;to-captured (list;n.range +0 (n.dec env-size))))))
+ _ (list/map &&function;to-captured (list;n.range +0 (n.dec env-size))))))
resolver' (if (&&function;nested? inner-arity)
- (L/fold (function [[from to] resolver']
- (d;put from to resolver'))
- init-resolver
- (list;zip2 env-vars env))
- (L/fold (function [var resolver']
- (d;put var var resolver'))
- init-resolver
- env-vars))]
+ (list/fold (function [[from to] resolver']
+ (dict;put from to resolver'))
+ init-resolver
+ (list;zip2 env-vars env))
+ (list/fold (function [var resolver']
+ (dict;put var var resolver'))
+ init-resolver
+ env-vars))]
(case (recur inner-arity resolver' +0 bodyA)
(#ls;Function arity' env' bodyS')
(let [arity (n.inc arity')]
@@ -125,7 +126,7 @@
(#la;Apply _)
(let [[funcA argsA] (&&function;unfold-apply exprA)
funcS (recur +0 resolver num-locals funcA)
- argsS (L/map (recur +0 resolver num-locals) argsA)]
+ argsS (list/map (recur +0 resolver num-locals) argsA)]
(case funcS
(^multi (#ls;Function _arity _env _bodyS)
(and (n.= _arity (list;size argsS))
@@ -137,11 +138,11 @@
(&&loop;adjust _env register-offset _bodyS)))
(#ls;Call argsS' funcS')
- (#ls;Call (L/append argsS' argsS) funcS')
+ (#ls;Call (list/compose argsS' argsS) funcS')
_
(#ls;Call argsS funcS)))
(#la;Procedure name args)
- (#ls;Procedure name (L/map (recur +0 resolver num-locals) args))
+ (#ls;Procedure name (list/map (recur +0 resolver num-locals) args))
)))
diff --git a/new-luxc/source/luxc/synthesizer/loop.lux b/new-luxc/source/luxc/synthesizer/loop.lux
index 9f4d09a49..ad4504f41 100644
--- a/new-luxc/source/luxc/synthesizer/loop.lux
+++ b/new-luxc/source/luxc/synthesizer/loop.lux
@@ -1,7 +1,8 @@
(;module:
lux
- (lux (data (coll [list "L/" Functor<List>])
- text/format))
+ (lux (data [maybe]
+ text/format
+ (coll [list "L/" Functor<List>])))
(luxc (lang ["ls" synthesis])
(synthesizer ["&&;" function])))
@@ -105,7 +106,7 @@
(let [resolve-captured (: (-> ls;Variable ls;Variable)
(function [var]
(let [idx (|> var (i.* -1) int-to-nat n.dec)]
- (|> env (list;nth idx) assume))))]
+ (|> env (list;nth idx) maybe;assume))))]
(loop [exprS exprS]
(case exprS
(#ls;Variant tag last? valueS)
diff --git a/new-luxc/source/luxc/synthesizer/variable.lux b/new-luxc/source/luxc/synthesizer/variable.lux
index 3a48cb3f2..01ad101fa 100644
--- a/new-luxc/source/luxc/synthesizer/variable.lux
+++ b/new-luxc/source/luxc/synthesizer/variable.lux
@@ -16,7 +16,7 @@
(list (nat-to-int register))
(^or (#ls;SeqP pre post) (#ls;AltP pre post))
- (L/append (bound-vars pre) (bound-vars post))
+ (L/compose (bound-vars pre) (bound-vars post))
_
(list)))
@@ -31,7 +31,7 @@
(path-bodies post)
(#ls;AltP pre post)
- (L/append (path-bodies pre) (path-bodies post))
+ (L/compose (path-bodies pre) (path-bodies post))
_
(list)))