[英]haskell can not construct infinite type
我是Haskell的新手。 我寫了一個簡單的代碼。 但這行不通。 我收到此“無法構造無限類型”錯誤。 如何解決。
reverse' list
| null list = []
| otherwise = (reverse' (tail list)) : (head list)
問題出在您使用:
運算符,其類型為
(:) :: a -> [a] -> [a]
因此,它需要一個元素和一個列表,並返回一個以該元素為前綴的新列表。 你在哪里
reverse' (tail list) : head list
-- parentheses removed since they're not needed
“ reverse' (tail list)
的類型為[a]
,而首部head list
的類型為a
,因此編譯器會嘗試使其變為a ~ [a]
,這顯然是行不通的。 相反,你可以使用++
運算符,並把head list
到列表本身:
reverse' (tail list) ++ [head list]
但是請記住,這不是一個非常有效的解決方案,因為Hassell列表是單鏈接列表,所以連接到Haskell列表的末尾比較慢。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.