2017-11-11 64 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

相關問題