2015-11-06 8 views

cevap

8

olarak (here bakınız) uygulanır:

xs >>= f = [y | x <- xs, y <- f x] 

ve concatMap (kaynak here)

concatMap :: Foldable t => (a -> [b]) -> t a -> [b] 
concatMap f xs = build (\c n -> foldr (\x b -> foldr c b (f x)) n xs) 
+1

İlginç daha karmaşık bir kurucu kullanıyor. Elimde olmadan bunu düşünürdüm neden aynı zamanda bir 'Foldable' bir' Alternative' bir 'Monad' .... – AJFarmar

+0

@AJFarmar denk olduğunu düşünemiyor? Bunun ne anlama geldiğini bilmiyorum – Emil

+0

@ user3217013 'bind 'fa f = foldr (<|>) boş $ foldr (:) [] (fmap f fa)' 'bind' :: (Katlanabilir f, Uygulamalı f) => fa -> (a -> fb) -> fb'. QED. – AJFarmar