Я знаю, как проверить, если строка содержит определенный характер, как это:Проверьте, если строка содержит определенный символ, используя рекурсию
charFound :: Char -> String -> Bool
charFound c s = c `elem` s
Теперь, как я мог бы иметь такой же подход, используя рекурсию?
Кроме того, с помощью Pattern Matching, чтобы проверить, если один из параметров пуст, я получаю
Анализировать Ошибка в шаблоне: '' s
charFound:: Char->String->Bool
charFound '' s = error "Something is empty." -- ERROR
charFound c "" = error "Something is empty." -- OK
Могу ли я использовать _
игнорировать параметр с чем-то, что не является списком?
Update данный код
charFound :: Char->String->Bool
charFound c (x:xs)
| c == x = True
| xs == "" = False
| otherwise = contido c xs
Также
charFound :: Char->String->Bool
charFound _ "" = False -- returns false if I type > charFound 'a' "Leh"
charFound c (x:xs)
| c == x = True
| otherwise = contido c xs
'elem' является рекурсивной функцией. Вы можете попробовать его реализовать или проверить в документации, как это реализовано. – duplode
От LearnYouaHaskell.com: Рекурсия на самом деле является способом определения функций, в которых функция применяется внутри собственного определения. – PlayHardGoPro
Вам не хватает пустого совпадения шаблона списка и вместо этого имеет забавный смс ненужный тест для пустого списка в непустой случай. – dfeuer