我剛剛學習Haskell,我想創建一個「混洗」函數,將兩個列表混合在一起,交替出現,直到一個列表用完。因此,shuffle "abc" "defgh"
將返回"adbecfgh"
。或者shuffle "abc" ""
返回。將Haskell中的兩個列表隨機混合在一起
到目前爲止,我有:
shuffle xs ys = concatMap (\(x,y) -> [x,y]) (zip xs ys)
的問題是,這只是洗牌名單最短列表的長度和不包括長列表的其餘部分。所以shuffle "abc" "defgh"
返回"adbecf"
而不是"adbecfgh"
。
任何人都可以幫助我找到更好的方法嗎?
同樣[交錯名單列表](http://stackoverflow.com/questions/14186433/interleave-list-of -lists-in-haskell)類似,但更一般。 – phadej 2015-02-11 07:42:11