empty = Object clone() do (
    clone = method(empty)
    __repr__ = __str__ = method("empty")
)

identity = block(x, x)

constantly = block(x,
    block(x)
)

caller = block(*args,
    block(f, f(*args))
)

complement = block(f, block(*args, not(f(*args))))

even = block(x, x % 2 == 0)
odd = complement(even)
