【发布时间】:2013-12-21 13:14:32
【问题描述】:
我刚开始从 this wikibook 学习 Haskell,其中一个练习有点麻烦。
具体来说,以下内容无法按我的预期工作
parseNumber :: Parser LispVal
parseNumber = (many1 digit) >>= (return $ Number . read)
除非我稍微改变一下
parseNumber :: Parser LispVal
parseNumber = (many1 digit) >>= (\n -> return $ Number . read $ n)
我希望有人能解释为什么 return $ Number . read 不会计算出我在第二个定义中明确创建的同一个 lambda 函数,因为我认为这正是部分函数计算在无点样式中使用时所做的事情代码(显然不是!)
感谢您的帮助,希望这不是另一个初学者的单子问题...
【问题讨论】:
-
return . Number . read应该可以工作。
标签: haskell