Haskell标识符中\的含义

Meaning of \ in Haskell identifier

当您不熟悉一种语言时,这些技巧中的一个更难找到,但其他人都知道并使用它。

在我的例子中,我想知道当你有一个变量的名字,比如 ts,并且你在它前面加上符号 \ 是什么意思:

newtype Parser a = Parser (String -> [(String, a)])
produce :: a -> Parser a
produce x = Parser (\ts -> [(ts, x)])

我猜这是在抽象变量?如果是这样,它对其他语言(如 Scala)的翻译是什么?

\parameter1 ... parameterN -> expression 是 Haskell 的 lambda 语法。 Scala 等价物是 (parameter1, ..., parameterN) => expression(或者,如果我们想保持函数被柯里化的事实,parameter1 => ... => parameterN => expression)。

为此语法选择了反斜杠,因为它是看起来最像 λ 的 ASCII 字符。