簡體   English   中英

Haskell交換嵌套列表

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM