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 字符。
当您不熟悉一种语言时,这些技巧中的一个更难找到,但其他人都知道并使用它。
在我的例子中,我想知道当你有一个变量的名字,比如 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 字符。