aboutsummaryrefslogtreecommitdiff
path: root/stdlib/source/polytypic/lux/abstract/equivalence.lux
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--stdlib/source/polytypic/lux/abstract/equivalence.lux98
1 files changed, 49 insertions, 49 deletions
diff --git a/stdlib/source/polytypic/lux/abstract/equivalence.lux b/stdlib/source/polytypic/lux/abstract/equivalence.lux
index 0c83b9ab5..bc044fe6b 100644
--- a/stdlib/source/polytypic/lux/abstract/equivalence.lux
+++ b/stdlib/source/polytypic/lux/abstract/equivalence.lux
@@ -48,50 +48,50 @@
inputT <type>.next
.let [@Equivalence (is (-> Type Code)
(function (_ type)
- (` ((~! /.Equivalence) (~ (poly.code *env* type))))))]]
+ (` ((,! /.Equivalence) (, (poly.code *env* type))))))]]
(all <>.either
... Basic types
- (~~ (with_template [<matcher> <eq>]
+ (,, (with_template [<matcher> <eq>]
[(do !
[_ <matcher>]
- (in (` (is (~ (@Equivalence inputT))
+ (in (` (is (, (@Equivalence inputT))
<eq>))))]
- [(<type>.exactly Any) (function ((~ g!_) (~ g!_) (~ g!_)) #1)]
- [(<type>.sub Bit) (~! bit.equivalence)]
- [(<type>.sub Nat) (~! nat.equivalence)]
- [(<type>.sub Int) (~! int.equivalence)]
- [(<type>.sub Rev) (~! rev.equivalence)]
- [(<type>.sub Frac) (~! frac.equivalence)]
- [(<type>.sub Text) (~! text.equivalence)]))
+ [(<type>.exactly Any) (function ((, g!_) (, g!_) (, g!_)) #1)]
+ [(<type>.sub Bit) (,! bit.equivalence)]
+ [(<type>.sub Nat) (,! nat.equivalence)]
+ [(<type>.sub Int) (,! int.equivalence)]
+ [(<type>.sub Rev) (,! rev.equivalence)]
+ [(<type>.sub Frac) (,! frac.equivalence)]
+ [(<type>.sub Text) (,! text.equivalence)]))
... Composite types
- (~~ (with_template [<name> <eq>]
+ (,, (with_template [<name> <eq>]
[(do !
[[_ argC] (<type>.applied (<>.and (<type>.exactly <name>)
equivalence))]
- (in (` (is (~ (@Equivalence inputT))
- (<eq> (~ argC))))))]
+ (in (` (is (, (@Equivalence inputT))
+ (<eq> (, argC))))))]
- [.Maybe (~! maybe.equivalence)]
- [.List (~! list.equivalence)]
- [sequence.Sequence (~! sequence.equivalence)]
- [array.Array (~! array.equivalence)]
- [queue.Queue (~! queue.equivalence)]
- [set.Set (~! set.equivalence)]
- [tree.Tree (~! tree.equivalence)]
+ [.Maybe (,! maybe.equivalence)]
+ [.List (,! list.equivalence)]
+ [sequence.Sequence (,! sequence.equivalence)]
+ [array.Array (,! array.equivalence)]
+ [queue.Queue (,! queue.equivalence)]
+ [set.Set (,! set.equivalence)]
+ [tree.Tree (,! tree.equivalence)]
))
(do !
[[_ _ valC] (<type>.applied (all <>.and
(<type>.exactly dictionary.Dictionary)
<type>.any
equivalence))]
- (in (` (is (~ (@Equivalence inputT))
- ((~! dictionary.equivalence) (~ valC))))))
+ (in (` (is (, (@Equivalence inputT))
+ ((,! dictionary.equivalence) (, valC))))))
... Models
- (~~ (with_template [<type> <eq>]
+ (,, (with_template [<type> <eq>]
[(do !
[_ (<type>.exactly <type>)]
- (in (` (is (~ (@Equivalence inputT))
+ (in (` (is (, (@Equivalence inputT))
<eq>))))]
[duration.Duration duration.equivalence]
@@ -103,7 +103,7 @@
(do !
[_ (<type>.applied (<>.and (<type>.exactly unit.Measure)
<type>.any))]
- (in (` (is (~ (@Equivalence inputT))
+ (in (` (is (, (@Equivalence inputT))
unit.equivalence))))
... Variants
(do !
@@ -112,19 +112,19 @@
g!_ (code.local "_____________")
g!left (code.local "_____________left")
g!right (code.local "_____________right")]]
- (in (` (is (~ (@Equivalence inputT))
- (function ((~ g!_) (~ g!left) (~ g!right))
- (case [(~ g!left) (~ g!right)]
- (~+ (list#conjoint (list#each (function (_ [tag g!eq])
+ (in (` (is (, (@Equivalence inputT))
+ (function ((, g!_) (, g!left) (, g!right))
+ (case [(, g!left) (, g!right)]
+ (,* (list#conjoint (list#each (function (_ [tag g!eq])
(if (nat.= last tag)
- (list (` [{(~ (code.nat (-- tag))) #1 (~ g!left)}
- {(~ (code.nat (-- tag))) #1 (~ g!right)}])
- (` ((~ g!eq) (~ g!left) (~ g!right))))
- (list (` [{(~ (code.nat tag)) #0 (~ g!left)}
- {(~ (code.nat tag)) #0 (~ g!right)}])
- (` ((~ g!eq) (~ g!left) (~ g!right))))))
+ (list (` [{(, (code.nat (-- tag))) #1 (, g!left)}
+ {(, (code.nat (-- tag))) #1 (, g!right)}])
+ (` ((, g!eq) (, g!left) (, g!right))))
+ (list (` [{(, (code.nat tag)) #0 (, g!left)}
+ {(, (code.nat tag)) #0 (, g!right)}])
+ (` ((, g!eq) (, g!left) (, g!right))))))
(list.enumeration members))))
- (~ g!_)
+ (, g!_)
#0))))))
... Tuples
(do !
@@ -133,33 +133,33 @@
indices (list.indices (list.size g!eqs))
g!lefts (list#each (|>> nat#encoded (text#composite "left") code.local) indices)
g!rights (list#each (|>> nat#encoded (text#composite "right") code.local) indices)]]
- (in (` (is (~ (@Equivalence inputT))
- (function ((~ g!_) [(~+ g!lefts)] [(~+ g!rights)])
- (and (~+ (|> (list.zipped_3 g!eqs g!lefts g!rights)
+ (in (` (is (, (@Equivalence inputT))
+ (function ((, g!_) [(,* g!lefts)] [(,* g!rights)])
+ (and (,* (|> (list.zipped_3 g!eqs g!lefts g!rights)
(list#each (function (_ [g!eq g!left g!right])
- (` ((~ g!eq) (~ g!left) (~ g!right)))))))))))))
+ (` ((, g!eq) (, g!left) (, g!right)))))))))))))
... Type recursion
(do !
[[g!self bodyC] (<type>.recursive equivalence)
.let [g!_ (code.local "_____________")]]
- (in (` (is (~ (@Equivalence inputT))
- ((~! /.rec) (.function ((~ g!_) (~ g!self))
- (~ bodyC)))))))
+ (in (` (is (, (@Equivalence inputT))
+ ((,! /.rec) (.function ((, g!_) (, g!self))
+ (, bodyC)))))))
<type>.recursive_self
... Type applications
(do !
[[funcC argsC] (<type>.applied (<>.and equivalence (<>.many equivalence)))]
- (in (` ((~ funcC) (~+ argsC)))))
+ (in (` ((, funcC) (,* argsC)))))
... Parameters
<type>.parameter
... Polymorphism
(do !
[[funcC varsC bodyC] (<type>.polymorphic equivalence)]
- (in (` (is (All ((~ g!_) (~+ varsC))
- (-> (~+ (list#each (|>> (~) ((~! /.Equivalence)) (`)) varsC))
- ((~! /.Equivalence) ((~ (poly.code *env* inputT)) (~+ varsC)))))
- (function ((~ funcC) (~+ varsC))
- (~ bodyC))))))
+ (in (` (is (All ((, g!_) (,* varsC))
+ (-> (,* (list#each (|>> (,) ((,! /.Equivalence)) (`)) varsC))
+ ((,! /.Equivalence) ((, (poly.code *env* inputT)) (,* varsC)))))
+ (function ((, funcC) (,* varsC))
+ (, bodyC))))))
<type>.recursive_call
... If all else fails...
(|> <type>.any