
#11170: (read ".9") :: Double unable to parse -------------------------------------+------------------------------------- Reporter: varosi | Owner: Type: bug | Status: closed Priority: normal | Milestone: Component: Core Libraries | Version: 7.10.2 Resolution: invalid | Keywords: Read, report- | impact Operating System: Unknown/Multiple | Architecture: Type of failure: Incorrect result | Unknown/Multiple at runtime | Test Case: Blocked By: | Blocking: Related Tickets: | Differential Rev(s): Wiki Page: | -------------------------------------+------------------------------------- Changes (by ekmett): * status: new => closed * resolution: => invalid Comment: The lexical syntax specified in the Haskell 98 Report here: https://www.haskell.org/onlinereport/syntax-iso.html#sect9.2 gives {{{ float -> decimal . decimal [exponent] | decimal exponent }}} A change to the report here would haphazardly change the semantics and behavior of code that currently typecheck. Like it or not, in the presence of the rather common {{{#!hs instance Num b => Num (a -> b) where f + g = \x -> f x + g x fromIntegral n = \x -> fromIntegral n ... }}} then `(.9)` parses today as precomposition with the constant function that returns 9. `abs .9` is a composition of abs and the function you obtain above from 9, etc. In the absence of such a change to the Haskell Report I'd say we should close this as a `invalid` (or `wontfix`) as it steps outside of the mandate of `read` for the language as it exists. From the standpoint of the libraries committee I'm going to close this out as such. In the unlikely event that the haskell-prime committee changes the language we have such that .9 parses as a `Fractional` value then we'd be faced with the dilemma of how to support both old and new standards on the library front. Feel free to reopen this if that happens and we'll be forced to figure out what to do. -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/11170#comment:13 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler