Просто посмотрел на Haskell и понял (насколько я могу судить) нет прямого способа проверить строку, чтобы увидеть, содержит ли она меньшую строку. Поэтому я решил, что я просто сделаю это.Есть ли лучший способ написать метод «string contains X»?
По существу идея состояла в том, чтобы проверить, были ли две строки одинакового размера и были равны. Если проверяемая строка была длиннее, рекурсивно лопнуть голову и снова запустить проверку, пока проверяемая строка не будет иметь одинаковую длину.
Остальные возможности, которые я использовал, соответствуют шаблону для их обработки. Это то, что я придумал:
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)
+1 для Hoogle. Это лучший друг всех кодов Haskell :) – Daenyth
Изучение [источник 'isInfixOf'] (http://hackage.haskell.org/packages/archive/base/latest/doc/html/src/Data-List.html #isInfixOf) является поучительным. – dave4420
@ dave4420 Ссылка не работает. – ThreeFx