【发布时间】:2014-02-16 21:45:10
【问题描述】:
我尝试运行以下代码,取自 Graham Hutton 的“Programming in Haskell”
type Parser a = [(a, String)]
return :: a -> Parser a
return v = \inp -> [(v,inp)]
在 GHCI 7.6.3 中加载模块时出现以下错误:
Couldn't match expected type `t0 -> [(a, t0)]'
with actual type `[(a, String)]'
The lambda expression `\ inp -> ...' has one argument,
but its type `Parser a' has none
In the expression: \ inp -> [(v, inp)]
In an equation for `return': return v = \ inp -> [(v, inp)]
Failed, modules loaded: none.
我将示例更改为:
type Parser a = [(a, String)]
return :: a -> String -> Parser a
return v inp = [(v,inp)]
这行得通,但我想运行原始示例,但想知道我错过了什么。
【问题讨论】: