私は文字列のリストから特定の文字で始まる単語を見つけようとしています。ユーザーは単語のリストと開始文字を入力します。たとえば、次のようなものです。
"テーブルペンシルチェアデスクペン" "p"
したがって、 p で始まる単語(この場合は pen と pencil )を表示する必要があります。私の最初のステップは、 words 関数を使って文字列を文字列のリストに分割することです。そして、どのような手紙が各単語から始まるのかを私はどのようにして見つけます関数の型は次のようになります。
p
pen
pencil
words
--------------Find words Starting with a given letter------------------ findWords :: String -> Char -> [String]
filter を使用します。
filter
foo string = filter startsWithP (words string)
次に、定義する必要があります
startsWithP :: String -> Bool
より有用なのは汎用バリアントです
startsWith :: String -> Char -> Bool
"foo" `startsWith` 'f' のように使用されます。
"foo" `startsWith` 'f'
filter ::(a - > Bool) - > [a] - > [a]
findWords
String
filter ::(String - > Bool) - > [String] - > [String]
Char
findwords c input = filter(条件c)(単語入力)
startsWith "foo" 'f'
Haskell#1:Haskellでは String は Chars のリストとして定義されているので、すべてのリスト関数を利用できます。
Chars
あなたは本当にあなたの投稿に従って与えられた文字列で始まる文字列を知りたいので、私は isPrefixOf 関数を使います:
isPrefixOf
filter ("p" `isPrefixOf`) ["cats", "dogs", "poor boys"]
私が覚えている限り、この関数はData.Listにあります。