packages feed

disco-0.2: example/demo.disco

f : Z -> Z
f x = x - 3

sum : List(Z) -> Z
sum []      = 0
sum (x::xs) = x + sum xs

g : N -> N
g (2n)   = n
g (2n+1) = n

q : N -> N
q x =
  {? 3        if x < 9
  ,  17       if 10 <= x < 22
  ,  99       otherwise
  ?}

type S = Unit + Char × S

len : S -> N
len (left(unit))  = 0
len (right(_, s)) = 1 + len s

type P(a) = a + P(a) * P(a)

height : P(a) -> N
height (left(_)) = 0
height (right(l, r)) = 1 + max(height l, height r)