無限リストのようでありながら

一個計算を進めるたびに外部の状態を取り込むような関数の型は、

type Func = InState -> (OutState, Func)

ではエラーになって、

data Func = Func (FuncInner)
type FuncInner = InState -> (OutState, Func)

では通るのですよね…。
今更ながらになんでだろうと思う初心者(私)であった。