21
GHCは、私が名前の関数でラムダ式に反駁できないチルダ( `〜`)パターンを使用することはできますか?
let step = \~(x,s) -> run (f x) s -- Parse Error
let step ~(x, s) = run (f x) s -- Works fine
GHCは、私が名前の関数でラムダ式に反駁できないチルダ( `〜`)パターンを使用することはできますか?
let step = \~(x,s) -> run (f x) s -- Parse Error
let step ~(x, s) = run (f x) s -- Works fine
を行うことができますようにラムダ式のパターンにチルダを置くしようとした場合は、ラムダとチルダ
の間にスペースを追加する必要が私にparse error on input \~
を与えます
\ ~(x,s) -> run (f x) s
\
と~
ユーザ定義演算子に有効な文字の両方であるので、混乱の源SO \~
代わりに、ラムダ式の開始として解析されるの一つとして解析される。
-- Defining a custom \~ operator is allowed:
let a \~ b = {- ... -}
これ以上の時間を無駄にした後、私はこの問題のオリジナル版を書き留めながら解決策を見つけました。私はまだ誰かを助けるかもしれない投稿を推測する... – hugomg
しかし、説明を追加する必要があります。 '' \ 'と'〜 'は共にシンボルであり演算子に現れることができるので、' \〜 'は1つのトークンとしてレキシングされます。 –