action        :: Parser Rational
fraction        =  do{ _ <- char '.'
                     ; digits <- many1 digit <?> "fraction"
                     ; return (foldr op 0 digits)
                     }
                  <?> "fraction"
                    where
                      op d f    = (f + fromIntegral (digitToInt d))/10


fraction        :: Parser Rational
fraction        =  do{ _ <- char '.'
                     ; digits <- many1 digit <?> "fraction"
                     ; return (foldr op 0 digits)
                     }
                  <?> "fraction"
                    where
                      op d f    = (f + fromIntegral (digitToInt d))/10
fraction        =  do{ _ <- char '.'
                     ; digits <- many1 digit <?> "fraction"
                     ; return (foldr op 0 digits)
                     }
                  <?> "fraction"
                    where
                      op d f    = (f + fromIntegral (digitToInt d))/10