Abstract: I’ll be talking about the FAlgebra Category and related applications of FAlgebra in function programming in this post.
So first of all, an algebra over a type $a$ is set of functions that converts an algebra structure $f a$ to $a$ CoAlg. An algebra consists of:
An example of an algebra looks like:
data F1 a = Zero  One  Plus a a
a
: Int
, String
, etc.1 2 3 4 

Or we can have:
1 2 3 4 

All algebras for an algebra structure $\rm{F}$ forms a category $\cal{C}$. The objects are, of course, the algebras, while the arrows are defined as morphisms between each two pair of algebras that transforming the carrier type: $\hom_{\cal{C}}(\rm{Alg}(\rm{F},\rm{a}), \rm{Alg}(\rm{F},\rm{b}))$.
1 2 3 4 5 6 7 8 9 

For an arrow in Falgebra category, we need a transformation from F a
to a
.