24

parse error on input \~如果我尝试在 lambda 表达式的模式上加上波浪号,GHC 会给我一个,就像我可以对命名函数做的那样

let step = \~(x,s) -> run (f x) s  -- Parse Error

let step ~(x, s) = run (f x) s -- Works fine
4

1 回答 1

23

您必须在 lambda 和波浪号之间添加一个空格

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

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

-- Defining a custom \~ operator is allowed:
let a \~ b = {- ... -} 
于 2012-11-01T21:19:02.633 回答