import list
count Void
count Unit
count Bool
count (Bool + Bool -> Bool)
count (Bool * Bool)
count (List(Void))
count (List (Void * Bool + Void))
count (List(Unit))
count (Void * Nat)
count (Nat * Void)
count (Void -> Nat)
count (Nat -> Void)
count (Void -> Void)
enumerate Void
enumerate (Bool -> Bool)
enumerate (Bool * Bool + Bool)
enumerate (Unit + Bool)
enumerate (Void * Unit)
enumerate (List(Void))
enumerate (List (Void * Bool + Void))
enumerate(Bool)
take(5, enumerate(List(Unit)))
take(10, enumerate(N))
take(6, enumerate(N * N))
enumerate (Void * Nat)
enumerate (Nat * Void)
enumerate (Void -> Nat)
enumerate (Nat -> Void)
enumerate (Void -> Void)
-- count Z5
-- count (Z5 * Z4)
-- count (Z3 + Z6)
-- count (Z3 -> Z2)
-- count (Z3 + Z4 -> Z2)
-- enumerate Z10
-- enumerate (Z2 * Z3)
-- enumerate (Z2 -> Z2)
-- enumerate (Z3 + Z4)
count (Bag(Void))
count (Bag(Unit))
count (Set(Void))
count (Set(Unit))
count (Set(Bool))
count Char
count ((N -> Void) -> N)
count (N -> (N -> Void))
-- each(\f. f unit, enumerate (Unit -> Unit)) == [unit]
-- each(\f. f unit, enumerate (Unit -> Bool)) == [false, true]
-- each(\f. f true, enumerate (Bool -> Bool)) == [false]
