GHC给了我一个parse error on input \~
如果我试图在lambda表达式的模式上设置一个代码,就像我可以用命名函数做的那样
let step = \~(x,s) -> run (f x) s -- Parse Error
let step ~(x, s) = run (f x) s -- Works fine
答案 0 :(得分:21)
你必须在lambda和tilde之间添加一个空格
\ ~(x,s) -> run (f x) s
混淆的原因是因为\
和~
都是用户定义的运算符的有效字符,所以\~
被解析为一个而不是被解析为lambda表达式的开头:
-- Defining a custom \~ operator is allowed:
let a \~ b = {- ... -}