免费(Reader x)阅读器(流 x)

特定

data Reader x a = Reader (x -> a)

我们有

data Free (Reader x) a
     = Pure a
     | Free (x -> Free (Reader x) a)

这是同构的

data Demand x a
     = Satisfied a
     | Hungry (x -> Demand x a)

或者相当于 Stream x -> a

data Stream x = Stream x (Stream x)