lux/macro/poly
Types
Env
(type: Env
(lux/data/struct/dict;Dict lux;Nat [lux;Type lux;AST]))
Matcher
(type: (Matcher a)
(-> lux;Type (lux;Lux a)))
Macros
derived:
poly:
Values
apply
(Matcher [lux;Type (lux;List lux;Type)])
bool
(Matcher lux;Unit)
(bound env)
(-> Env (Matcher lux;AST))
char
(Matcher lux;Unit)
(extend-env [funcT funcA] type-vars env)
(-> [lux;Type lux;AST] (lux;List [lux;Type lux;AST]) Env Env)
frac
(Matcher lux;Unit)
func
(Matcher [lux;Type lux;Type])
func+
(Matcher [(lux;List lux;Type) lux;Type])
function
(Matcher [(lux;List lux;AST) (lux;List lux;Type) lux;Type])
(gen-type env converter type-fun tvars type)
(-> Env (-> lux;AST lux;AST) lux;AST (lux;List lux;AST) lux;Type lux;AST)
int
(Matcher lux;Unit)
list
(Matcher lux;Type)
maybe
(Matcher lux;Type)
nat
(Matcher lux;Unit)
polymorphic
(Matcher [(lux;List lux;AST) lux;Type])
primitive
(Matcher lux;Type)
prod
(Matcher [lux;Type lux;Type])
prod+
(Matcher (lux;List lux;Type))
real
(Matcher lux;Unit)
record
(Matcher [(lux;List lux;AST) (lux;List [lux;Ident lux;Type])])
(recur env)
(-> Env (Matcher lux;AST))
sum
(Matcher [lux;Type lux;Type])
sum+
(Matcher (lux;List lux;Type))
tagged
(Matcher [(lux;List lux;Ident) lux;Type])
text
(Matcher lux;Unit)
tuple
(Matcher [(lux;List lux;AST) (lux;List lux;Type)])
(type-var-indices num-vars)
(-> lux;Nat (lux;List lux;Type))
unit
(Matcher lux;Unit)
(var env var-id)
(-> Env lux;Nat (Matcher lux;Unit))
variant
(Matcher [(lux;List lux;AST) (lux;List [lux;Ident lux;Type])])
void
(Matcher lux;Unit)