Я пытаюсь сделать рекурсивный вызов в моей программе Haskell. Я хочу вызывать свою функцию каждый раз, когда элемент моего списка совпадает со словом.
Мой код компилируется без проблем, но когда я пытаюсь его выполнить, у меня появляется эта ошибка
haskell: haskell.hs:(27,1)-(30,33): Non-exhaustive patterns in function detect
Моя функция, в которой проблема:
detect :: [[Char]] -> [[Char]] -> [[Char]]
detect (x:xs) b
| x == "now" || x == "go" = detect xs (SwapP 0 1 b)
| x == "stop" = detect xs (SwapP 0 (length b - 1) b)
detect (x:xs) b = detect xs b
В x: xs есть мой список слов, а в моем b есть функция, задача которой - изменить положение слова.
Но рекурсив в охранниках не работает.
Самая странная вещь в моей проблеме - когда я пытаюсь сделать то же самое, но за пределами моей охраны, это работает, если я Я делаю
detect :: [[Char]] -> [[Char]] -> [[Char]]
detect (x:xs) b = detect xs (SwapP 0 (length b - 1) b)
, это работает, мои первые и последние слова меняются.
Так что, если у кого-то есть идея проблемы, вы можете написать небольшое сообщение. Благодаря.