簡體   English   中英

Haskell:與map函數一起使用時了解函數應用程序運算符

[英]Haskell: Understanding function application operator when used with map function

我有以下Haskell表達式:

map ($ 5) [(-),(+),(*)]

我知道函數應用程序運算符($)將函數應用於給定參數。 但是,由於( - ),(+)和(*)函數采用兩個參數,通過將這些函數應用於5到map,部分應用了這些函數。

結果列表將包含三個帶有另一個參數的函數:

(1)從5中減去參數

(2)將參數添加到5

(3)將參數乘以5

但是,上述表達式是否等同於以下內容是否有效?

[(5 -),(5 +),(5 *)]

我認為這是正確的,因為我檢查了GHCI中的(5 - ),(5 +)和(5 *)的類型,它們都是帶數字並返回數字的函數:

(5 -) :: Num a => a -> a
(5 +) :: Num a => a -> a
(5 *) :: Num a => a -> a

任何見解都表示贊賞。

正確; 您還可以通過以下方式再次申請運營商:

map ($4) $ map ($ 5) [(-),(+),(*)]

[5-4, 5 + 4, 5 * 4]

此外,您可以指定運算符右側的參數,從而得到相同的結果:

[((-) 5),(+ 5),(* 5)]

(-) 5具有“ - ”括號的原因是為了防止編譯器認為你的意思是“減五”,一個負數,通常解釋為(- 5) )。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM