以下是该表达式在Haskell中的含义?
($ 3)
ghci显示以下类型
($ 3) :: Num a => (a -> b) -> b.
($ 3)
ghci显示以下类型
($ 3) :: Num a => (a -> b) -> b.
($3)
是一个区间,并相当于\f -> f 3
,它接受一个函数参数并将其应用于3。3
视为整数,则f
的类型为Int -> b
(对于任何b
),因此($3)
的类型将为(Int -> b) -> b
。3
可以是任何数字类型,因此我们不需要f :: Int -> b
,只需要f :: a -> b
,其中a
是一个数字类型。($3) :: Num a => (a -> b) -> b
。(@ x)
等同于\a -> a @ x
;因此,($ 3)
等同于\f -> f $ 3
,即将任何传递给它的函数应用于3
。这种语法称为“部分应用”。> let f = ($ 3)
> f show
"3"
> f square
9
($) :: (a -> b) -> a -> b
3 :: Num a => a
当你在($)
中插入数字3时,它将变成
($ 3) :: Num a => (a -> b) -> b.