Ваш шаблон почти правильный, вам просто нужно заключить его в скобки:
myordered (y:x:xs)
Также обратите внимание, что нет необходимости заключать y
и x
в круглые скобки в y <= x
.
Также в вашей второй версии есть семантическая ошибка:
myordered(xs)
здесь xs
относится к хвосту хвоста, но вы хотите весь хвост, поэтому вы должны сделать myordered (x:xs)
или альтернативно:
myordered (y:xs@(x:_))
| y <= x = myordered xs
| otherwise = False
Что говорит: xs
- это хвост этого списка, x
- это голова этого хвоста, а _
(который игнорируется) - это хвост этого хвоста.