簡體   English   中英

將[]環繞列表的每個頂級元素

[英]wraps [] around each top-level element of list

wrap [1,2,3] should output [[1],[2],[3]]
wrap [[1],[2],[3]] should output [ [[1]], [[2]], [[3]] ]

我的實現是:

wrap [] = []
wrap (x:xs) = [x] :  [wrap xs]

並haskell輸出錯誤:發生檢查:無法構造無限類型:t〜[t]

預期類型:[t]-> [t]實際類型:[t]-> [[t]]

[wrap xs]包裹的整個結果wrap xs 您不想包裝整個結果。 您只需要包裝列表其余部分的每個元素,而這正是wrap xs已經完成的工作。 因此, wrap

wrap :: [a] -> [[a]]
wrap [] = []
wrap (x:xs) = [x] : wrap xs

錯誤告訴您正在嘗試使用[t] ,GHC期望t 這正是我們上面所說的,您正在包裝很多東西。

暫無
暫無

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

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