我有以下的列表(這是一個長2列,但在我的任務,我有一個長度+ N列表)「替換」 3元組
xxs = [(11,22,[(33,33,33),(44,44,44)]),(55,66,[(77,77,77),(88,88,88)])]
我想「取代」一3元組(p1或p2或圖像波紋管中的p3或p4)按列表索引(n
)和子列表索引(p
)。
的功能,在結束時,應該是這樣的:
fooo newtuple n p = (…)
例如:(爲(98,98,98)替換P3:
fooo (98,98,98) 2 1
[(11, 22, [(33,33,33) , (44,44,44)]) , (55, 66, [(98,98,98),(88,88,88)])]
我按照以下步驟計劃代碼:
訪問我想更改的pn。我設法實現它:
fob n p = ((aux2 xxs)!!n)!!p where aux2 [] = [] aux2 ((_,_,c):xs) = c:aux2 xs
「替換」三元組。我真的需要一些幫助。我卡住了。 (我記得:請不要在我的代碼上太壞,我只在Haskell研究了5周)
foo n p newtuple = fooAux newtuple fob where fooAux _ [] = [] fooAux m ((_):ds) = m:ds fob n p = ((aux2 xxs)!!n)!!p where aux2 [] = [] aux2 ((_,_,c):xs) = c:aux2 xs
最後我會把所有的東西放在一起,使用
splitAt
。
我的方法是否正確?我真的很感謝第2步的一些幫助。
首先,你的解釋是非常了不起的。第二:我還有很多東西需要學習,但是我對你的回答有了很多瞭解。第三:我花了一天的時間試圖解決這個問題,幾分鐘後就解決了(我真的有很多東西要學習和學習)。最後,大家謝謝! _o_ – Nomics