У меня есть следующие функции:Haskell - Нелегальная литерал ошибки типа в определении функции
replace :: a -> Int -> [a] -> [a]
replace elem 0 x:xs = elem : xs
replace elem i x:xs = x ++ replace elem (i - 1) xs
И GHCi говорит мне, что у меня есть нелегальный литерал ошибки типа, а именно на буквальном 0 в первом определении , Теперь я знаю, что если я пытаюсь заменить произвольный элемент в списке, я не должен использовать структуру данных списка. Это прекрасно, поскольку я планирую реорганизовать свою программу, как только смогу получить то, что хочу работать.
Что касается жалобы компилятора, я не совсем уверен, почему Haskell полагает, что я пытаюсь определить тип здесь. Любая помощь с этим будет высоко оценена.
Записать '(x: xs)' вместо 'x: xs' в шаблоне и' x: 'вместо' x ++ '. Я не уверен, почему он жалуется на типовые литералы - когда я его компилирую, я получаю «синтаксическую ошибку в шаблоне: заменить», что и следовало ожидать. – user2407038
@ user2407038 ваш комментарий - это ответ, поэтому он должен быть действительно опубликован как таковой. –