Właśnie patrzyłem używając Haskell i zrealizowałem (o ile mogę powiedzieć) nie ma bezpośredniego sposobu na sprawdzenie łańcucha, aby zobaczyć, czy zawiera on mniejszy ciąg. Pomyślałem więc, że po prostu spróbuję.Czy istnieje lepszy sposób zapisu metody "ciąg zawiera X"?
Zasadniczo chodziło o sprawdzenie, czy oba łańcuchy miały taki sam rozmiar i były równe. Jeśli sprawdzany łańcuch był dłuższy, rekurencyjnie odwróć głowę i ponownie uruchom sprawdzanie, dopóki sprawdzany ciąg nie będzie takiej samej długości.
Resztę możliwości wykorzystałem do dopasowania wzorców do ich obsługi. Oto, co wymyśliłem:
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 do Hoogle. To najlepszy przyjaciel wszystkich programistów Haskell :) – Daenyth
Badanie [źródła 'isInfixOf'] (http://hackage.haskell.org/packages/archive/base/latest/doc/html/src/Data-List.html #isInfixOf) jest pouczający. – dave4420
@ dave4420 Link jest uszkodzony. – ThreeFx