2017-11-11 23 views

回答

5
combine = zipWith (++) 

zipWith需要两个列表,并应用于给两个列表的第一个项目,然后是第二等的功能。如果一个表比其他长,其额外项目将被跳过。

++函数带两个列表并将它们连接在一起。一个字符串只是一个字符列表。

"hello " ++ "world" == "hello world"

用法:

λ> combine ["me","you","he"] ["she","they","it"] 
["meshe","youthey","heit"] 
λ> combine [] [] 
[] 
λ> combine ["me", "you"] ["she"] 
["meshe"] 
λ> 

++操作是很基本的,所以你可能会更好继续读你来之前计算器正在使用的任何学习材料,你就会有我期望的很多问题都会在你的书中得到解答。

如果你不想使用zipWith,你可以很简单地用递归写像这样:

combine [] _ = [] 
combine _ [] = [] 
combine (x:xs) (y:ys) = (x ++ y) : combine xs ys 

用法和以前一样。

+0

如果不想使用zipwith函数 –

+0

@UmairAziz请参阅我的编辑。这是一个非常简单的递归函数。 – Zpalmtree

+0

@UmairAziz你为什么不呢?作为一般规则,您应该尽量避免显式递归;这是您重塑车轮的标志。 – chepner

相关问题