我正在学习haskell,对函数应用运算符$ curry 的操作有点困惑。
根据 GHC,$ 的类型是
*Main>:t ($)
($) :: (a->b) -> a -> b
但我可以输入以下代码
*Main>map ($ 2) [(*2), (+2), (/2)]
[4.0,4.0,1.0]
根据 $ 的签名,虽然我认为我需要使用翻转函数,因为 $ 的第一个参数是 (a->b)。
例如,我不能执行以下操作
curry_test :: Integer -> String -> String
curry_test x y = (show x) ++ " " ++ y
*Main> let x = curry_test "123"
Couldn't match expected type `Integer' with actual type `[Char]'
In the first argument of `curry_test', namely `"123"'
In the expression: curry_test "123"
In an equation for `x': x = curry_test "123"
但我可以
let x = curry_test 2