@EricRogstad

In the video lectures they defined:

`
data ListInt x = Nil | Cons Int x
deriving Functor
`

The definition of

`
data ListF a x = NilF | ConsF a x
deriving Functor
`

just generalize the `ListInt` definition to any type, not just `Int`.

So instead of an Algebra `ListInt x -> x` we would have `ListF a x -> x`. With this definition we can create a `ListInt` with `ListF Int x` or a `ListString` with `ListF String x`, etc.

In other words, the notation \( List(X) \rightarrow X \) corresponds to `ListF a x -> x`.