我有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