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.