5

したがって、ラムダについては、Learn You a Haskell で示されているように思います。

(filter (\xs -> length xs > 15) (map chain [1..100])) 

xs の入力は、(map chain [1..100])) That's easy enough to read から生成されたリストです。

ここで、いくつかの Real World Code (tm) を見て混乱します。

これはコンジットからの関数です

fmap f (ResourceT m) = ResourceT $ \r -> fmap f (m r)

r の入力はどこから来ていますか?

4

2 に答える 2

12

r\r -> fmap f (m r)関数が実際に呼び出されるまで、値はありません。の定義でfmapは、関数は呼び出されません。関数は。にのみ格納されResourceTます。その後、から取り出してResourceT呼び出すことができます。そのときr、値が取得されます。

于 2012-09-07T22:33:46.713 に答える
6

クロージャ\r -> fmap f (m r)の例である関数です。変数とは、関数が実行される環境の一部です。また、Haskellは関数型言語であるため、この場合のように、関数は評価されたり部分的に評価されたりすることなく受け渡される可能性があります。fm

于 2012-09-07T22:39:36.650 に答える