その中の単語のリストに「これはありますか」という文字列があれば、「これ」、「ある」、「物語」、 "all"、 "about"、 "how"]をReadP Stringのインスタンスとして使用しますか?私はさまざまな方法を試しましたが、そのうちの1つはこれです:コンマで区切られた値の文字列をhaskellの文字列のリストに解析する方法は?
parseStr :: ReadP String
parseStr = do
skipSpaces
n <- munch1 isAlphaOrDigit
skipComma
return $ n
すべての値を解析して最後の値を解析します。
parseLast :: ReadP String
parseLast = do
skipSpaces
n <- munch1 isAlphaOrDigit
return $ n
parseLet = (many parseStr) +++ parseLast
としてではなく、それはどちらか動作しませんでした:私はこの解析とそれを組み合わせた場合、私は思いました。任意のヒント?
編集:以上の定義
isAlphaOrDigit :: Char -> Bool
isAlphaOrDigit a = (isDigit a) || (isAlpha a)
comma = satisfy (','==)
skipComma = const() <$> some comma
カッコは、あなたの入力の一部であるかどうかを ""(this、is、a、story、all、about、how) – duplode
また、 'isAlphaOrDigit'と' skipComma'の定義を見る必要があります。 – duplode
カッコは入力の一部であり、定義は次のとおりです。 'isAlphaOrDigit :: Char - > Bool isAlphaOrDigit a =(isDigit a)|| (isAlpha a) '' skipComma = const()<$>いくつかのコンマ ' – jazaniac