所以我覺得Lambda表達式作爲證明了解您Haskell的:困惑這個使用lambda的
(filter (\xs -> length xs > 15) (map chain [1..100]))
的輸入XS是0 這是很容易讀取生成的列表。
所以這裏是我感到困惑的地方,看着一些真實世界代碼(tm)。
下面是 conduit
fmap f (ResourceT m) = ResourceT $ \r -> fmap f (m r)
一個功能位置是從r來輸入?
所以我覺得Lambda表達式作爲證明了解您Haskell的:困惑這個使用lambda的
(filter (\xs -> length xs > 15) (map chain [1..100]))
的輸入XS是0 這是很容易讀取生成的列表。
所以這裏是我感到困惑的地方,看着一些真實世界代碼(tm)。
下面是 conduit
fmap f (ResourceT m) = ResourceT $ \r -> fmap f (m r)
一個功能位置是從r來輸入?
r
在實際調用功能\r -> fmap f (m r)
之前不會有值。在fmap
的定義中,該函數從未被調用 - 它只存儲在ResourceT
中。然後可以從ResourceT
中取出並呼叫。這是r
將獲得價值。
\r -> fmap f (m r)
是作爲closure的一例的功能。變量f
和m
是函數將要執行的環境的一部分。另外,因爲Haskell是一個函數式語言,函數可以在沒有被評估或被部分評估的情況下被傳遞,就像在這種情況下一樣。
如果我可以選擇兩個答案,我會的。無論如何Upvote。 –