Я новичок в Haskell и не могу найти причину, по которой я не могу это скомпилировать:
test = foldr (\x y -> y : x) [1]
Я не пытаюсь добиться чего-либо функционально для фиктивной функции «тест».
Просто я продолжаю получать этот код ошибки:
Occurs check: cannot construct the infinite type: a0 = [a0]
In the first argument of `(:)', namely `y'
In the expression: y : x
In the first argument of `foldr', namely `(\ x y -> y : x)'
Все, что я хочу сделать, это иметь возможность объединять элементы из списка, чтобы сформировать другой список в анонимной функции, определенной в другой функции (в данном случае, определенной в «тесте».)
Спасибо.
foldr (\x y -> x : y) [1]
(или, что то же самое, толькоfoldr (:) [1]
)? - person huon   schedule 14.10.2012