在阅读Wadler的原始论文Monads for Functional Programming(1992)时,我感觉好像我已经得到了它,但是,在非monadic描述中状态处理程序,他显示了状态的原始monadic描述:
type M a = State -> (a, State)
eval :: Term -> M Int
eval (Con a) x = (a, x)
它再次停止了。我怎么读这个?据我所知,这表示eval接受一个int和一个状态并返回一个接受状态并返回一对新函数的函数(Int,State)
但是......(a,x),如果我读这个权利是一个值和状态的元组,是-a "获取状态并返回新对(Int,State)"?
的函数答案 0 :(得分:14)
展开类型同义词:Term -> M Int
相当于Term -> State -> (Int, State)
。
或者,将函数定义视为eval (Con a) = \x -> (a, x)
。