功能编程 - 样式图增加元素的功能?

fab*_*789 2 haskell functional-programming

我知道并爱我filter,map并且reduce,它恰好是越来越多的纯粹功能性语言的一部分.

我发现自己需要一个类似的功能:类似的东西map,但不是一对一,它将是一对多.

即原始列表中的一个元素可能被映射到目标列表中的多个元素.

那里已经有这样的东西了,还是我必须自己动手?

Cir*_*dec 5

这正是>>=列表专用的内容.

> [1..6] >>= \x -> take (x `mod` 3) [1..]
[1,1,2,1,1,2]
Run Code Online (Sandbox Code Playgroud)

concat汇集了结果

> map (\x -> take (x `mod` 3) [1..]) [1..6]
[[1],[1,2],[],[1],[1,2],[]]
Run Code Online (Sandbox Code Playgroud)

  • 当然,但我发现首先指向`concatMap`更自然,然后,作为对那些可以使用它的人的评论,指出`(>> =)= concatMap`. (6认同)
  • 如果您不喜欢奇怪的符号,可以使用`concatMap`. (3认同)