Я боролся с довольно простой вещью в Haskell, и, поскольку я не могу понять, что и почему блокирует меня, я подумал, что было бы неплохо спросить здесь. Я хотел бы создать функцию, которая удаляет числа в данном массиве, которые точно такие же, как и предыдущие. Так, например, из массива: [12,12,3,4,5,5,5,7,9]
я хотел бы получить на выходе: [12,3,4,5,7,9]
. На основании этого я написал:
removeDuplicates[x] = x
removeDuplicates(x:y:ys) | x == y = removeDuplicates(x:ys)
| otherwise = x ++ removeDuplicates([]:y:ys)
... но после успешной загрузки кода я получаю сообщение об ошибке:
* Non type-variable argument in the constraint: Num [a]
(Use FlexibleContexts to permit this)
* When checking the inferred type
it :: forall a. (Eq a, Num [a]) => [a]
Я понимаю, что что-то не так с моим otherwise
оператор и тип возвращаемого значения, но поскольку я новичок в Haskell, я не знаю, как решить эту скорее забавную, чем серьезную проблему.