hug*_*omg 21 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
Run Code Online (Sandbox Code Playgroud)
hug*_*omg 21
你必须在lambda和tilde之间添加一个空格
\ ~(x,s) -> run (f x) s
Run Code Online (Sandbox Code Playgroud)
混淆的原因是因为\并且~都是用户定义的运算符的有效字符,因此\~被解析为一个而不是被解析为lambda表达式的开头:
-- Defining a custom \~ operator is allowed:
let a \~ b = {- ... -}
Run Code Online (Sandbox Code Playgroud)