aboutsummaryrefslogtreecommitdiff
path: root/stdlib/source/library/lux/type.lux
diff options
context:
space:
mode:
Diffstat (limited to 'stdlib/source/library/lux/type.lux')
-rw-r--r--stdlib/source/library/lux/type.lux132
1 files changed, 66 insertions, 66 deletions
diff --git a/stdlib/source/library/lux/type.lux b/stdlib/source/library/lux/type.lux
index 7c347bd0e..c99823da1 100644
--- a/stdlib/source/library/lux/type.lux
+++ b/stdlib/source/library/lux/type.lux
@@ -33,7 +33,7 @@
(loop [num_args 0
type type]
(case type
- (<tag> env sub_type)
+ {<tag> env sub_type}
(recur (++ num_args) sub_type)
_
@@ -46,7 +46,7 @@
(def: .public (flat_function type)
(-> Type [(List Type) Type])
(case type
- (#.Function in out')
+ {#.Function in out'}
(let [[ins out] (flat_function out')]
[(list& in ins) out])
@@ -56,7 +56,7 @@
(def: .public (flat_application type)
(-> Type [Type (List Type)])
(case type
- (#.Apply arg func')
+ {#.Apply arg func'}
(let [[func args] (flat_application func')]
[func (list\composite args (list arg))])
@@ -67,7 +67,7 @@
[(def: .public (<name> type)
(-> Type (List Type))
(case type
- (<tag> left right)
+ {<tag> left right}
(list& left (<name> right))
_
@@ -80,7 +80,7 @@
(def: .public (format type)
(-> Type Text)
(case type
- (#.Primitive name params)
+ {#.Primitive name params}
($_ text\composite
"(primitive "
(text.enclosed' text.double_quote name)
@@ -90,7 +90,7 @@
")")
(^template [<tag> <open> <close> <flat>]
- [(<tag> _)
+ [{<tag> _}
($_ text\composite <open>
(|> (<flat> type)
(list\each format)
@@ -101,7 +101,7 @@
([#.Sum "(Or " ")" flat_variant]
[#.Product "[" "]" flat_tuple])
- (#.Function input output)
+ {#.Function input output}
(let [[ins out] (flat_function type)]
($_ text\composite "(-> "
(|> ins
@@ -111,26 +111,26 @@
(list\mix text\composite ""))
" " (format out) ")"))
- (#.Parameter idx)
+ {#.Parameter idx}
(n\encoded idx)
- (#.Var id)
+ {#.Var id}
($_ text\composite "⌈v:" (n\encoded id) "⌋")
- (#.Ex id)
+ {#.Ex id}
($_ text\composite "⟨e:" (n\encoded id) "⟩")
- (#.Apply param fun)
+ {#.Apply param fun}
(let [[type_func type_args] (flat_application type)]
($_ text\composite "(" (format type_func) " " (|> type_args (list\each format) list.reversed (list.interposed " ") (list\mix text\composite "")) ")"))
(^template [<tag> <desc>]
- [(<tag> env body)
+ [{<tag> env body}
($_ text\composite "(" <desc> " {" (|> env (list\each format) (text.interposed " ")) "} " (format body) ")")])
([#.UnivQ "All"]
[#.ExQ "Ex"])
- (#.Named [module name] type)
+ {#.Named [module name] type}
($_ text\composite module "." name)
))
@@ -138,27 +138,27 @@
(def: (reduced env type)
(-> (List Type) Type Type)
(case type
- (#.Primitive name params)
- (#.Primitive name (list\each (reduced env) params))
+ {#.Primitive name params}
+ {#.Primitive name (list\each (reduced env) params)}
(^template [<tag>]
- [(<tag> left right)
- (<tag> (reduced env left) (reduced env right))])
+ [{<tag> left right}
+ {<tag> (reduced env left) (reduced env right)}])
([#.Sum] [#.Product]
[#.Function] [#.Apply])
(^template [<tag>]
- [(<tag> old_env def)
+ [{<tag> old_env def}
(case old_env
#.End
- (<tag> env def)
+ {<tag> env def}
_
- (<tag> (list\each (reduced env) old_env) def))])
+ {<tag> (list\each (reduced env) old_env) def})])
([#.UnivQ]
[#.ExQ])
- (#.Parameter idx)
+ {#.Parameter idx}
(maybe.else (panic! ($_ text\composite
"Unknown type parameter" text.new_line
" Index: " (n\encoded idx) text.new_line
@@ -183,7 +183,7 @@
@.php false]
(same? x y))
(case [x y]
- [(#.Primitive xname xparams) (#.Primitive yname yparams)]
+ [{#.Primitive xname xparams} {#.Primitive yname yparams}]
(and (text\= xname yname)
(n.= (list.size yparams) (list.size xparams))
(list\mix (.function (_ [x y] prev) (and prev (= x y)))
@@ -191,26 +191,26 @@
(list.zipped/2 xparams yparams)))
(^template [<tag>]
- [[(<tag> xid) (<tag> yid)]
+ [[{<tag> xid} {<tag> yid}]
(n.= yid xid)])
([#.Var] [#.Ex] [#.Parameter])
- (^or [(#.Function xleft xright) (#.Function yleft yright)]
- [(#.Apply xleft xright) (#.Apply yleft yright)])
+ (^or [{#.Function xleft xright} {#.Function yleft yright}]
+ [{#.Apply xleft xright} {#.Apply yleft yright}])
(and (= xleft yleft)
(= xright yright))
- [(#.Named xname xtype) (#.Named yname ytype)]
+ [{#.Named xname xtype} {#.Named yname ytype}]
(and (name\= xname yname)
(= xtype ytype))
(^template [<tag>]
- [[(<tag> xL xR) (<tag> yL yR)]
+ [[{<tag> xL xR} {<tag> yL yR}]
(and (= xL yL) (= xR yR))])
([#.Sum] [#.Product])
- (^or [(#.UnivQ xenv xbody) (#.UnivQ yenv ybody)]
- [(#.ExQ xenv xbody) (#.ExQ yenv ybody)])
+ (^or [{#.UnivQ xenv xbody} {#.UnivQ yenv ybody}]
+ [{#.ExQ xenv xbody} {#.ExQ yenv ybody}])
(and (n.= (list.size yenv) (list.size xenv))
(= xbody ybody)
(list\mix (.function (_ [x y] prev) (and prev (= x y)))
@@ -225,21 +225,21 @@
(-> (List Type) Type (Maybe Type))
(case params
#.End
- (#.Some func)
+ {#.Some func}
- (#.Item param params')
+ {#.Item param params'}
(case func
(^template [<tag>]
- [(<tag> env body)
+ [{<tag> env body}
(|> body
(reduced (list& func param env))
(applied params'))])
([#.UnivQ] [#.ExQ])
- (#.Apply A F)
+ {#.Apply A F}
(applied (list& A params) F)
- (#.Named name unnamed)
+ {#.Named name unnamed}
(applied params unnamed)
_
@@ -248,36 +248,36 @@
(def: .public (code type)
(-> Type Code)
(case type
- (#.Primitive name params)
- (` (#.Primitive (~ (code.text name))
- (.list (~+ (list\each code params)))))
+ {#.Primitive name params}
+ (` {#.Primitive (~ (code.text name))
+ (.list (~+ (list\each code params)))})
(^template [<tag>]
- [(<tag> idx)
- (` (<tag> (~ (code.nat idx))))])
+ [{<tag> idx}
+ (` {<tag> (~ (code.nat idx))})])
([#.Var] [#.Ex] [#.Parameter])
(^template [<tag>]
- [(<tag> left right)
- (` (<tag> (~ (code left))
- (~ (code right))))])
+ [{<tag> left right}
+ (` {<tag> (~ (code left))
+ (~ (code right))})])
([#.Sum] [#.Product] [#.Function] [#.Apply])
- (#.Named name sub_type)
+ {#.Named name sub_type}
(code.identifier name)
(^template [<tag>]
- [(<tag> env body)
- (` (<tag> (.list (~+ (list\each code env)))
- (~ (code body))))])
+ [{<tag> env body}
+ (` {<tag> (.list (~+ (list\each code env)))
+ (~ (code body))})])
([#.UnivQ] [#.ExQ])
))
(def: .public (de_aliased type)
(-> Type Type)
(case type
- (#.Named _ (#.Named name type'))
- (de_aliased (#.Named name type'))
+ {#.Named _ {#.Named name type'}}
+ (de_aliased {#.Named name type'})
_
type))
@@ -285,7 +285,7 @@
(def: .public (anonymous type)
(-> Type Type)
(case type
- (#.Named name type')
+ {#.Named name type'}
(anonymous type')
_
@@ -298,11 +298,11 @@
#.End
<base>
- (#.Item type #.End)
+ {#.Item type #.End}
type
- (#.Item type types')
- (<ctor> type (<name> types'))))]
+ {#.Item type types'}
+ {<ctor> type (<name> types')}))]
[variant Nothing #.Sum]
[tuple Any #.Product]
@@ -314,8 +314,8 @@
#.End
output
- (#.Item input inputs')
- (#.Function input (function inputs' output))))
+ {#.Item input inputs'}
+ {#.Function input (function inputs' output)}))
(def: .public (application params quant)
(-> (List Type) Type Type)
@@ -323,15 +323,15 @@
#.End
quant
- (#.Item param params')
- (application params' (#.Apply param quant))))
+ {#.Item param params'}
+ (application params' {#.Apply param quant})))
(template [<name> <tag>]
[(def: .public (<name> size body)
(-> Nat Type Type)
(case size
0 body
- _ (|> body (<name> (-- size)) (<tag> (list)))))]
+ _ (|> body (<name> (-- size)) {<tag> (list)})))]
[univ_q #.UnivQ]
[ex_q #.ExQ]
@@ -340,15 +340,15 @@
(def: .public (quantified? type)
(-> Type Bit)
(case type
- (#.Named [module name] _type)
+ {#.Named [module name] _type}
(quantified? _type)
- (#.Apply A F)
+ {#.Apply A F}
(|> (..applied (list A) F)
(\ maybe.monad each quantified?)
(maybe.else #0))
- (^or (#.UnivQ _) (#.ExQ _))
+ (^or {#.UnivQ _} {#.ExQ _})
#1
_
@@ -361,12 +361,12 @@
_ (|> element_type
(array (-- depth))
(list)
- (#.Primitive array.type_name))))
+ {#.Primitive array.type_name})))
(def: .public (flat_array type)
(-> Type [Nat Type])
(case type
- (^multi (^ (#.Primitive name (list element_type)))
+ (^multi (^ {#.Primitive name (list element_type)})
(text\= array.type_name name))
(let [[depth element_type] (flat_array element_type)]
[(++ depth) element_type])
@@ -391,7 +391,7 @@
(<>.maybe (<>.after (<code>.identifier! ..secret_marker) <code>.any)))
<code>.any)])
(case input
- (#.Left [valueN valueC])
+ {#.Left [valueN valueC]}
(do meta.monad
[location meta.location
valueT (meta.type valueN)
@@ -399,7 +399,7 @@
($_ text\composite
(name\encoded (name_of ..:log!)) " " (location.format location) text.new_line
"Expression: " (case valueC
- (#.Some valueC)
+ {#.Some valueC}
(code.format valueC)
#.None
@@ -408,7 +408,7 @@
" Type: " (..format valueT)))]]
(in (list (code.identifier valueN))))
- (#.Right valueC)
+ {#.Right valueC}
(macro.with_identifiers [g!value]
(in (list (` (.let [(~ g!value) (~ valueC)]
(..:log! (~ valueC) (~ (code.identifier ..secret_marker)) (~ g!value)))))))))
@@ -429,7 +429,7 @@
#.None
(in (list casterC))
- (#.Some value)
+ {#.Some value}
(in (list (` ((~ casterC) (~ value)))))))))
(type: Typed