我在這里看到,有幾種方法可以解決它,但我正在努力用遞回來解決它。
示例:[("a",1), ("b",2)] 到 (["a","b"] ,[1,2])
我到目前為止:
listOfPairs :: [ ( String , Int ) ] -> ( [ String ] , [ Int ] )
listOfPairs((a,b): xs) = ([a], [b]) -- and here I don't know how to call the function again with the rest xs
我已經嘗試過listOfPairs((a,b): xs) = ([a], [b]) listOfPairs xs,但顯然它不起作用。
也許有人有一個想法。謝謝
uj5u.com熱心網友回復:
unzip這是ping背后的想法:
listOfPairs :: [(a, b)] -> ([a], [b])
listOfPairs = unzip
至于遞回方法,您應該進行遞回呼叫,然后將元素附加到 2 元組的兩項,因此:
listOfPairs :: [(a, b)] -> ([a], [b])
listOfPairs [] = …
listOfPairs ((a, b):xs) = (a : …, b : …)
where ~(as, bs) = listOfPairs …
我在哪里填寫…零件作為練習。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/516744.html
標籤:列表哈斯克尔递归元组
