[英]Haskell's function application operator ($) usage
我正在讀Bartosz Milewski撰寫的一篇文章,其中他定義了以下功能:
instance Applicative Chan where
pure x = Chan (repeat x)
(Chan fs) <*> (Chan xs) = Chan (zipWith ($) fs xs)
為什么函數應用程序運算符在括號中? 我理解這通常是為了在前綴表示形式中使用中綴函數,但我不明白為什么,在這種情況下,函數不能簡單地表達為Chan (zipWith $ fs xs)
,並想知道兩者之間的區別是什么。
(如果您仍需要上下文,請參閱文章 )
在這種情況下, $
正被傳遞給zipWith
。 這和寫作一樣
zipWith (\ f x -> f x) fs xs
沒有括號,它本來就相當於
zipWith (fs xs)
哪個不會出現問題。
括號中的運算符與普通標識符完全相同。 具有以下定義:
apply = ($)
代碼可能看起來像
zipWith apply fs xs
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.