簡體   English   中英

將列表附加到 Haskell 中的列表列表中?

[英]Appending lists into a list of lists in Haskell?

我能在相關文檔中找到的只是 ++ 和 concat。

起初我認為執行以下操作會給我想要的東西:

  [1, 3, 4] ++ [4, 5, 6]

但如您所知,它只給出 [1, 2, 3, 4, 5, 6]。

我需要做什么才能接受 [1, 2, 3] 和 [4, 5, 6] 並退出 [[1, 2, 3], [4, 5, 6]]?

如評論中所述,獲取兩個列表並將它們組合成一個新列表的函數可以定義為:

combine :: [a] -> [a] -> [[a]]
combine xs ys = [xs,ys]

不能多次應用此函數來創建任意數量列表的列表。 這樣的函數將接受一個列表和一個列表列表,並將單個列表添加到列表列表中,因此它的類型為:

push :: [a] -> [[a]] -> [[a]]

這只是(:) ,不過:

push = (:)

正如評論中提到的,值[x,y]也可以寫成x : y : [] 1由於這兩種情況都可以用(:)完成,我猜你真正想要使用的是(:) ,有時會用到[]有時會用到非空列表。


1事實上, [x,y]只是x:y:[]語法糖

想想 (++) 運算符的作用:它連接列表,而不是構造它們。 這就是它將文本字符串連接成新字符串(而不是字符串列表)的方式,因為字符串是字符列表。 從您使用 (:) 的列表中構造一個新列表,如下所示:

[1,2,3]:[4,5,6]:[]

您將每個列表添加為新列表的元素

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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