今後の試験に向けて過去の試験を復習していて、いくつかの問題を解いた後、解けない問題に出くわしました。
String (または [Char]) を取り、String に含まれる英単語の数の Int を返す関数が必要です。isWord は、文字列を受け取り、単語が true か false かに応じて Boolean を返す架空の関数であると書かれています。単語は左から右に一列に並んでいる必要があります。与えられた例は「カタログ」でした。したがって、「cat」、「at」、「catalog」、「ogre」、および「log」の場合、関数は 5 を返す必要があります。
wordsInString :: [Char] -> Int
wordsInString [] = 0
wordsInString x
| isWord (take 1 x)
| isWord (take 2 x)
バンパーは私が考えていたことを示しているだけで、明らかに機能しません。
これが私が始めた方法であり、take
関数を使用して一度に各文字をインクリメントし、開始文字を まで下に移動できると考えていました[]
が、その再帰を正しく実装する方法がわかりませんでした。誰かがアイデアを持っているか、私に方法を示すことができれば、それは素晴らしいことです.