(.require
[library
[lux (.except)
[control
[functor (.only Fix)]]]])
(type: .public (Algebra f a)
(-> (f a) a))
(type: .public (CoAlgebra f a)
(-> a (f a)))
(type: .public (RAlgebra f a)
(-> (f (Tuple (Fix f) a)) a))
(type: .public (RCoAlgebra f a)
(-> a (f (Or (Fix f) a))))