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