История изменений
Исправление Miguel, (текущая версия) :
При паттерн-матчинге слева не может быть произвольная функция, только конструктор. (++) — не конструктор списка. У списков два конструктора: [] и (:). У тебя в первой альтернативе конструктор [], во второй — оба (а именно, там написано "(:) c []"), а в третьей написано "(++) ((:) c []) b"
И, кстати, вторая альтернатива не нужна, она — частный случай третьей.
Исходная версия Miguel, :
При паттерн-матчинге слева не может быть произвольная функция, только конструктор. (++) — не конструктор списка. У списков два конструктора: [] и (:). У тебя в первой альтернативе конструктор [], во второй — оба (а именно, там написано "(:) c []"), а в третьей написано "(++) ((:) c []) b)"
И, кстати, вторая альтернатива не нужна, она — частный случай третьей.