Есть ли лучший способ написать метод "строка содержит X"?

Просто начал использовать Haskell и понял (насколько я могу судить), что нет прямого способа проверить строку, чтобы увидеть, содержит ли она меньшую строку. Поэтому я решил попробовать.

По сути, идея заключалась в том, чтобы проверить, одинакового ли размера две строки и равны ли они. Если проверяемая строка была длиннее, рекурсивно отрезать голову и запустить проверку снова, пока проверяемая строка не станет одинаковой длины.

Для остальных возможностей я использовал сопоставление с образцом. Вот что у меня получилось:

stringExists "" wordToCheckAgainst = False
stringExists wordToCheckFor "" = False
stringExists wordToCheckFor wordToCheckAgainst | length wordToCheckAgainst < length wordToCheckFor = False
                                               | length wordToCheckAgainst == length wordToCheckFor = wordToCheckAgainst == wordToCheckFor
                                               | take (length wordToCheckFor) wordToCheckAgainst == wordToCheckFor = True
                                               | otherwise = stringExists wordToCheckFor (tail wordToCheckAgainst)
21
задан Rakete1111 12 November 2016 в 18:30
поделиться