練習問題(つづき)

「入門Haskell」のp.31から二つ目。

② 単語のカウント方法として,Theory of Everything'のようにバッククォートとシングルクォートで囲まれたパートを,1つの単語として表現するように wordsCount を拡張しなさい。</p></blockquote> <!-- /wp:quote --> <!-- wp:paragraph --> <p>オリジナルの wordsCount。<br></p> <!-- /wp:paragraph --> <!-- wp:enlighter/codeblock --> <pre class="EnlighterJSRAW" data-enlighter-language="generic" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">wordsCount str = outWords str where outWords [] = 0 outWords (c:cs) | isAlphaNum c = 1 + inWords cs | otherwise = outWords cs inWords [] = 0 inWords (c:cs) | isAlphaNum c = inWords cs | otherwise = outWords cs</pre> <!-- /wp:enlighter/codeblock --> <!-- wp:paragraph --> <p>拡張版。</p> <!-- /wp:paragraph --> <!-- wp:enlighter/codeblock --> <pre class="EnlighterJSRAW" data-enlighter-language="generic" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">wordsCount str = outWords str where outWords [] = 0 outWords (c:cs) | c == '‘ = 1 + inQuote cs | isAlphaNum c = 1 + inWords cs | otherwise = outWords cs inWords [] = 0 inWords (c:cs) | c == ‘' = 1 + inQuote cs | isAlphaNum c = inWords cs | otherwise = outWords cs inQuote [] = 0 inQuote (c:cs) | c == '\'' = outWords cs | otherwise = inQuote cs</pre> <!-- /wp:enlighter/codeblock --> <!-- wp:paragraph --> <p>結果。</p> <!-- /wp:paragraph --> <!-- wp:preformatted --> <pre class="wp-block-preformatted">*Main> wordsCount "Theory of Everything’ by Greg Egan” 4

カテゴリー: Haskell パーマリンク

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください