21
GHC給我一個parse error on input \~
如果我嘗試把一個波浪上的lambda表達式就像我可以在名爲功能是否有可能在lambda表達式中使用無可辯駁的波浪符(`〜`)模式?
let step = \~(x,s) -> run (f x) s -- Parse Error
let step ~(x, s) = run (f x) s -- Works fine
GHC給我一個parse error on input \~
如果我嘗試把一個波浪上的lambda表達式就像我可以在名爲功能是否有可能在lambda表達式中使用無可辯駁的波浪符(`〜`)模式?
let step = \~(x,s) -> run (f x) s -- Parse Error
let step ~(x, s) = run (f x) s -- Works fine
你必須拉姆達與波浪之間添加一個空格做的模式
\ ~(x,s) -> run (f x) s
混亂的來源是因爲\
和~
是用戶定義的運算符,以便\~
被解析爲一個,而不是被解析爲一個lambda表達式的開始都有效字符:
-- Defining a custom \~ operator is allowed:
let a \~ b = {- ... -}
在浪費了更多時間之後,我想在這一個上,我偶然發現瞭解決方案,同時寫下這個問題的原始版本。我想仍然發佈它可能會幫助某人,雖然... – hugomg
但你應該添加解釋。 ''''和'〜'都是符號,可以出現在運算符中,所以'\〜'被合併爲一個符號。 –