簡體   English   中英

Haskell的函數應用程序運算符($)用法

[英]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.

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