Sadece Haskell'i kullanarak baktım ve farkettim (anlayabildiğim kadarıyla), daha küçük bir dizginin içerip içermediğini görmek için bir dizgiyi kontrol etmenin doğrudan bir yolu yoktur. Bu yüzden sadece bir atış yapacağımı düşündüm. Temelde fikir, iki dizenin aynı büyüklükte olup olmadığını ve eşit olup olmadığını kontrol etmekti. Kontrol edilen dizge daha uzunsa, kafaya tekrar tekrar sarılır ve kontrol edilen dizge aynı uzunlukta oluncaya kadar tekrar kontrol edilir."Dize X içeriyor" yöntemini yazmanın daha iyi bir yolu var mı?
Diğer olasılıkları kullanabilmek için desen eşleştirmesi kullandım.
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. Tüm Haskell kodlayıcılarının en iyi arkadaşı :) – Daenyth
[isInfixOf' kaynağının incelenmesi] (http://hackage.haskell.org/packages/archive/base/latest/doc/html/src/Data-List.html #isInfixOf) öğreticidir. – dave4420
@ dave4420 Bağlantı bozuk. – ThreeFx