簡體   English   中英

Haskell的綁定函數的類型是什么?

[英]What is the type of Haskell's bind function?

一個非常受歡迎的monad解釋如下:

http://blog.sigfpe.com/2007/04/trivial-monad.html

除了這部分我得到的一切:

bind :: (a -> W b) -> (W a -> W b)
bind f (W x) = f x

我有Haskell的基本知識(很長一段時間沒用過它),但這個簽名看起來不對。

我安裝了GHC並檢查了它的想法 - 結果它認為我做了什么,即:

:t bind
bind :: (t1 -> t) -> W t1 -> t

我錯過了什么?

Haskell的類型推斷器總是考慮最一般的簽名。 因為在你的bind實現中,你沒有做任何給出參數f東西比任何類型的函數更具體到任何其他類型(不是特別是W b ),即有一個簽名a -> b (或t1 -> t ,正如推薦人寫的那樣),當然它就是這樣。

換句話說,簽名(a -> b) -> W a -> b(a -> W b) -> (W a -> W b)的嚴格更一般的版本。

暫無
暫無

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

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