Haskell压缩列表到薄纱列表

Haskell压缩列表到薄纱列表,haskell,Haskell,我尝试使用zip实现代码,但我知道这是不够的。我也试着使用地图,但我只是不知道如何开始。非常感谢任何提示或帮助。这是[]单子的一个用例,更具体地说,[]应用程序函子。[]作为一个应用函子,它封装了尝试这些东西的所有可能组合的思想,即广义笛卡尔积 >cprod [1,2,3] [’a’, ’b’] [(1,’a’),(2,’a’),(3,’a’),(1,’b’),(2,’b’),(3,’b’)] 如果您不关心订单,那么就不必担心翻页 flip (,) <$> ['a', 'b'

我尝试使用zip实现代码,但我知道这是不够的。我也试着使用地图,但我只是不知道如何开始。非常感谢任何提示或帮助。

这是[]单子的一个用例,更具体地说,[]应用程序函子。[]作为一个应用函子,它封装了尝试这些东西的所有可能组合的思想,即广义笛卡尔积

>cprod [1,2,3] [’a’, ’b’]
[(1,’a’),(2,’a’),(3,’a’),(1,’b’),(2,’b’),(3,’b’)]
如果您不关心订单,那么就不必担心翻页

flip (,) <$> ['a', 'b'] <*> [1, 2, 3]

通常,zip和ZipList应用程序functor将成对地联接列表,因此第一个元素与第一个匹配,第二个与第二个匹配,依此类推。[]应用函子将执行笛卡尔积,这就是您要寻找的。

这是[]单子的一个用例,更具体地说,[]应用函子。[]作为一个应用函子,它封装了尝试这些东西的所有可能组合的思想,即广义笛卡尔积

>cprod [1,2,3] [’a’, ’b’]
[(1,’a’),(2,’a’),(3,’a’),(1,’b’),(2,’b’),(3,’b’)]
如果您不关心订单,那么就不必担心翻页

flip (,) <$> ['a', 'b'] <*> [1, 2, 3]

通常,zip和ZipList应用程序functor将成对地联接列表,因此第一个元素与第一个匹配,第二个与第二个匹配,依此类推。[]applicative functor将执行笛卡尔积,这就是您正在寻找的。列表理解是另一种方法

(,) <$> [1, 2, 3] <*> ['a', 'b']

列表理解是另一种方法

(,) <$> [1, 2, 3] <*> ['a', 'b']