入門 Haskell 練習問題 1.6

1. wordScan を使って inQuote を再実装

wordsCount str       = outWords str
 where
   outWords str = wordScan (\n -> 1 + n) str
   inWords str  = wordScan id str
   inQuote (c:cs)
           | c == '\'' = outWords cs
           | otherwise = inQuote cs
   wordScan f [] = 0
   wordScan f (c:cs)
            | c == '`'     = f (inQuote cs)
            | isAlphaNum c = f (inWords cs)
            | otherwise    = outWords cs

inQuote から wordScan を呼べれば綺麗なんだけど。