-2
我已经实现序列的实施方式中 '::单子米=> [毫安] - 下面Haskell中测试不同MAPM
sequence' [] = return []
sequence' (m : ms)
= m >>=
\ a ->
do as <- sequence' ms
return (a : as)
我需要测试以下的 MAPM实现> M [A]' ::单子米=>(A - > mb)个 - >并[a] - >米并[b]
mapM'a f as = sequence' (map f as)
mapM'b f [] = return []
mapM'b f (a : as)
= f a >>= \b -> mapM'b f as >>= \ bs -> return (b : bs)
mapM'f f [] = return []
mapM'f f (a : as) =
do b <- f a
bs <- mapM'f f as
return (b : bs)
mapM'g f [] = return []
mapM'g f (a : as)
= f a >>=
\ b ->
do bs <- mapM'g f as
return (b : bs)
mapM'h f [] = return []
mapM'h f (a : as)
= f a >>=
\ b ->
do bs <- mapM'h f as
return (bs ++ [b])
请让我知道如何测试和验证的MAPM上述实现 - 我应该调用哪个函数。一些示例将非常有用。
感谢
看起来你的老师正试图让你习惯'do'符号转化为'>> ='的应用。尝试通过各种'mapM'函数运行像'\ x - > Just(x + 1)'这样的简单函数和像[[1,2,3]]这样的测试列表并查看输出。 (提示:其中一个实现不正确!) –