1

尝试在这里编译 Haskell.Happy 示例:http ://www.haskell.org/happy/doc/html/sec-using.html#sec-other-datatypes ,在生成 .hs 文件后,我得到了

No instance for (Show ([String, Int)] -> Int

错误,试图编译它,而示例的第一部分编译并运行良好

我究竟做错了什么?

编辑:完整的错误信息

No instance for (Show ([(String, Int)] -> Int))
  arising from a use of `print'
Possible fix:
  add an instance declaration for (Show ([(String, Int)] -> Int))
In the first argument of `(.)', namely `print'
In the second argument of `(>>=)', namely `print . calc . lexer'
In the expression: getContents >>= print . calc . lexer

我在跑

ghc example.hs

这条线是

main = getContents >>= print . calc . lexer

可能重复的问题的答案是传递一个环境,但我怎么能在这里做到呢?

4

1 回答 1

4

calc可能是 type [Token] -> [(String,Int)] -> Int,因此 main 应该是:

main = getContents >>= print . ($ []) . calc . lexer

注意:中的列表($ [])是环境

于 2014-06-17T14:05:48.717 回答