aboutsummaryrefslogtreecommitdiff
path: root/stdlib/source/lux/macro/poly/functor.lux
diff options
context:
space:
mode:
Diffstat (limited to 'stdlib/source/lux/macro/poly/functor.lux')
-rw-r--r--stdlib/source/lux/macro/poly/functor.lux21
1 files changed, 11 insertions, 10 deletions
diff --git a/stdlib/source/lux/macro/poly/functor.lux b/stdlib/source/lux/macro/poly/functor.lux
index f3ed46041..91a325198 100644
--- a/stdlib/source/lux/macro/poly/functor.lux
+++ b/stdlib/source/lux/macro/poly/functor.lux
@@ -17,23 +17,23 @@
(poly: #export Functor<?>
(do @
- [#let [type-funcC (code.local-symbol "\u0000type-funcC")
- funcC (code.local-symbol "\u0000funcC")
- inputC (code.local-symbol "\u0000inputC")]
+ [#let [type-funcC (code.local-symbol "____________type-funcC")
+ funcC (code.local-symbol "____________funcC")
+ inputC (code.local-symbol "____________inputC")]
*env* poly.env
inputT poly.peek
[polyC varsC non-functorT] (poly.local (list inputT)
(poly.polymorphic poly.any))
#let [num-vars (list.size varsC)]
#let [@Functor (: (-> Type Code)
- (function [unwrappedT]
+ (function (_ unwrappedT)
(if (n/= +1 num-vars)
(` (functor.Functor (~ (poly.to-code *env* unwrappedT))))
(let [paramsC (|> num-vars n/dec list.indices (L/map (|>> %n code.local-symbol)))]
(` (All [(~+ paramsC)]
(functor.Functor ((~ (poly.to-code *env* unwrappedT)) (~+ paramsC)))))))))
Arg<?> (: (-> Code (poly.Poly Code))
- (function Arg<?> [valueC]
+ (function (Arg<?> valueC)
($_ p.either
## Type-var
(do p.Monad<Parser>
@@ -45,7 +45,7 @@
[_ (wrap [])
membersC (poly.variant (p.many (Arg<?> valueC)))]
(wrap (` (case (~ valueC)
- (~+ (L/join (L/map (function [[tag memberC]]
+ (~+ (L/join (L/map (function (_ [tag memberC])
(list (` ((~ (code.nat tag)) (~ valueC)))
(` ((~ (code.nat tag)) (~ memberC)))))
(list.enumerate membersC))))))))
@@ -55,7 +55,7 @@
(poly.tuple (loop [idx +0
pairsCC (: (List [Code Code])
(list))]
- (p.either (let [slotC (|> idx %n (format "\u0000slot") code.local-symbol)]
+ (p.either (let [slotC (|> idx %n (format "____________slot") code.local-symbol)]
(do @
[_ (wrap [])
memberC (Arg<?> slotC)]
@@ -68,13 +68,14 @@
## Functions
(do @
[_ (wrap [])
- #let [outL (code.local-symbol "\u0000outL")]
+ #let [g! (code.local-symbol "____________")
+ outL (code.local-symbol "____________outL")]
[inT+ outC] (poly.function (p.many poly.any)
(Arg<?> outL))
#let [inC+ (|> (list.size inT+) n/dec
(list.n/range +0)
- (L/map (|>> %n (format "\u0000inC") code.local-symbol)))]]
- (wrap (` (function [(~+ inC+)]
+ (L/map (|>> %n (format "____________inC") code.local-symbol)))]]
+ (wrap (` (function ((~ g!) (~+ inC+))
(let [(~ outL) ((~ valueC) (~+ inC+))]
(~ outC))))))
## Recursion