24

parse error on input \~名前付き関数でできるように、ラムダ式のパターンにチルダを付けようとすると、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

ラムダとチルダの間にスペースを追加する必要があります

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

混乱の原因は、\~が両方ともユーザー定義演算子の有効な文字であるため\~、ラムダ式の開始として解析されるのではなく、1 つとして解析されるためです。

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