@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`.

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`.