相关疑难解决方法(0)

在Haskell中合并两个列表

无法弄清楚如何在Haskell 中以下列方式合并两个列表:

INPUT:  [1,2,3,4,5] [11,12,13,14]

OUTPUT: [1,11,2,12,3,13,4,14,5]
Run Code Online (Sandbox Code Playgroud)

merge haskell functional-programming list interleave

24
推荐指数
4
解决办法
5万
查看次数

无限列表的笛卡儿积分haskell

我有一个有限列表的函数

> kart :: [a] -> [b] -> [(a,b)]
> kart xs ys = [(x,y) | x <- xs, y <- ys]
Run Code Online (Sandbox Code Playgroud)

但如何为无限列表实现它?我听说过Cantor和集合理论......

我也发现了一个类似的功能

> genFromPair (e1, e2) = [x*e1 + y*e2 | x <- [0..], y <- [0..]]
Run Code Online (Sandbox Code Playgroud)

但是我不确定它是否有帮助,因为拥抱只会在没有中断的情况下发出对.

感谢帮助.

haskell

4
推荐指数
1
解决办法
1000
查看次数

在Haskell中将两个列表混合在一起

我只是在学习Haskell,我想制作一个"shuffle"函数,将两个列表混合在一起,直到一个用完为止.所以,shuffle "abc" "defgh"会回来"adbecfgh".或者shuffle "abc" ""返回"abc".

到目前为止,我有:

shuffle xs ys = concatMap (\(x,y) -> [x,y]) (zip xs ys)
Run Code Online (Sandbox Code Playgroud)

问题是,它只是在列表中填充最短列表的长度,而不包括较长列表的其余部分.所以shuffle "abc" "defgh"回报"adbecf"而不是"adbecfgh".

任何人都可以帮我找到更好的方法吗?

haskell

3
推荐指数
2
解决办法
276
查看次数