如果我有這樣的插入功能:哈斯克爾:foldr相似VS foldr1
insert x [] = [x]
insert x (h:t)
| x <= h = x:(h:t)
| otherwise = h:(insert x t)
這將產生一個排序列表:
foldr insert [] [1,19,-2,7,43]
但這:
foldr1 insert [1,19,-2,7,43]
產生「不能構造無限型:a0 = [a0]'
我很困惑爲什麼第二個電話無法工作。
我已經看過foldr和foldr1的定義,並且都使用簡單的算術函數進行了描述,但我仍然無法爲第二次調用失敗提出明確的解釋。