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)