[英]Haskell swap nested list
我有這個功能:
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
會獲取一個列表列表,並交換這些子列表中的每個子列表,而完全不更改“較大”列表的順序。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.