Просто посмотрел на 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)