0
我有這樣的功能:哈斯克爾交換嵌套列表
swap [] = []
swap [a] = [a]
swap a = last a : (init . tail $ a) ++ [head a]
如果我用這個有一個名單列表上,它只是轉身每個列表,而不是在每個列表中的元素。我在這裏錯過了什麼?
我有這樣的功能:哈斯克爾交換嵌套列表
swap [] = []
swap [a] = [a]
swap a = last a : (init . tail $ a) ++ [head a]
如果我用這個有一個名單列表上,它只是轉身每個列表,而不是在每個列表中的元素。我在這裏錯過了什麼?
swap
需要一個事物的列表,並交換其最後一個元素的第一個元素。由於根本沒有任何關於在內部尋找的內容,所以它絕對不會修改列表內的任何元素。
但是,如果您有一個事項列表,並且您想對列表中的每個項目執行一些修改,那麼已經有一個功能:map
。並且您想要執行的修改是swap
,那麼讓我們看看這些類型是如何排列的。
map :: ( a -> b) -> [a] -> [b]
swap :: [a] -> [a]
map swap :: [[a]] -> [[a]]
所以map swap
需要列出清單,並交換各自的子表,而根本改變「較大」列表中的順序。
也許你想使用'地圖交換'而不是'交換'列表的列表 – Carsten
哦,我的,謝謝。沒想到它是那麼簡單:) – PythonUserNew
你是什麼意思*轉身*。你的'swap'功能只能交換列表中的頭部和尾部。 –