Haskell 美元运算符应用程序

标签 haskell operators dollar-sign partial-application operator-sections

这个问题在这里已经有了答案:





What does $ mean/do in Haskell?

(2 个回答)


5年前关闭。




我无法理解函数应用程序如何与 Haskell 中的柯里化(Currying)一起工作。
如果我有以下功能:

($) :: (a -> b) -> a -> b

我了解要部分应用此功能,我需要提供 (a -> b)函数( $ 的第一个参数)。

那么为什么可以先应用一个值(即反向参数)?
($ 0) :: Num a => (a -> b) -> b

我在这里想念什么?

最佳答案

($)是一个运算符。在 Haskell 中,任何运算符都可以写在左侧(如 (x $) )或右侧(如 ($ x) ):

(x $) = (\y -> x $ y) = ($) x
($ x) = (\y -> y $ x) = flip ($) x

请注意,此规则的唯一异常(exception)是 (-) ,为了方便写负数:
\x -> (x-) :: Num a => a -> a -> a  -- equivalent to \x -> (-) x
\x -> (-x) :: Num a => a -> a       -- equivalent to \x -> negate x

如果你想简洁地写 (\y -> y - x) , 你可以使用 subtract :
\x -> subtract x :: Num a => a -> a -> a  -- equivalent to \x -> flip (-) x

关于Haskell 美元运算符应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14407599/

相关文章:

r - 如何提供(逻辑)运算符作为函数的参数

函数应用: Why is $ used here?

java - 货币格式 加拿大英语和法语

haskell - 尴尬的单子(monad)变压器堆栈

haskell - 请解释一下 (forM_ [stdout, stderr] .flip hPutStrLn)::String -> IO ()

haskell - 这个 `deriving newtype` 语法是什么?

haskell - 在 Haskell 中将 WHNF 转换为 NF 感到困惑

javascript - 什么?和 ?? javascript中的运算符呢?

bash - zsh 中特殊的美元符号变量有哪些?

android - $ sign in a Text widget,如何在flutter中显示特殊字符?如何在 flutter 中将特殊字符设置为文本小部件