是否可以在lambda表达式中使用无可辩驳的波浪号(`~`)模式?

时间:2012-11-01 21:19:03

标签: haskell pattern-matching

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

1 个答案:

答案 0 :(得分:21)

你必须在lambda和tilde之间添加一个空格

\ ~(x,s) -> run (f x) s

混淆的原因是因为\~都是用户定义的运算符的有效字符,所以\~被解析为一个而不是被解析为lambda表达式的开头:

-- Defining a custom \~ operator is allowed:
let a \~ b = {- ... -}