簡體   English   中英

haskell無法構造無限類型

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

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