Просто посмотрел с помощью 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)