2016-12-25 64 views
4

$類型簽名如下:

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

因此,如果plus1 n = n + 1,那麼我們有

> ($) plus1 1 
2 

但後來那爲什麼

> ($ 1) plus1 
2 

呢?形式($ 1) plus1似乎違反$的類型簽名。

+0

您正在考慮'(1 $)plus1' ...... – Bakuriu

回答

15

如果您嘗試

(($) 1) plus1 

你會得到你所期望的類型的錯誤。

特殊語法($ 1)被稱爲部分,並且代表\x -> x $ 1,它與普通應用程序($) 1不同。該語法可以與所有中綴運算符(*)一起使用,例如(+ 1)(* 4)

(*)除-之外,因爲(- 10)是負常數-10

相關問題