我有2個列表中有相同數量的元素,例如:[1,2,3]
和['a','b','c']
。如何匹配Haskell中的列表元素1對1
我想合併他們兩個格式[(1,'a')(2,'b')(3,'c')]
。可能嗎?如果是這樣,該怎麼做?我找不到方法。
我有2個列表中有相同數量的元素,例如:[1,2,3]
和['a','b','c']
。如何匹配Haskell中的列表元素1對1
我想合併他們兩個格式[(1,'a')(2,'b')(3,'c')]
。可能嗎?如果是這樣,該怎麼做?我找不到方法。
這樣做有三種主要方法。
首先,zip
功能:
> zip [1,2,3] "abc"
[(1,'a'), (2,'b'), (3, 'c)]
和它的朋友,在zipWith
功能:
> zipWith (,) [1,2,3] "abc"
[(1,'a'), (2,'b'), (3, 'c)]
最後,隨着ParallelListComp
擴展名爲*:
> [(a,b) | a <- [1,2,3] | b <- "abc"]
[(1,'a'),(2,'b'),(3,'c')]
如果」重新尋找未來的功能,請使用hoogle,它可以讓您查找類型簽名以及名稱。
如果你真的想,你可以明確地定義它:
zip' :: [a] -> [b] -> [(a,b)]
zip' [] _ = []
zip' _ [] = []
zip' (a:as) (b:bs) = (a,b) : zip as bs
*調用GHCI與-XParallelListComp
或添加{-# OPTIONS_GHC -XParallelListComp #-}
到您的文件。
thnx |符號適合我 – Tomahawk 2015-04-05 22:51:01
如果有疑問,Hoogle。 https://www.haskell.org/hoogle/?hoogle=zip+%3A%3A+%5Ba%5D+-%3E+%5Bb%5D+-%3E+%5B%28a%2Cb%29%5D – AJFarmar 2015-04-03 16:05:57