[Haskell-cafe] read "2" in a "void" context?

Jeffrey Brown jeffbrown.the at gmail.com
Fri May 27 18:42:19 UTC 2016


Without a type signature, all GHCI knows:

    Prelude> :t read "2"
    read "2" :: Read a => a

is that it should return some kind of Read -- that is, something that can
be from a string. GHCI is not being asked to return any (concrete) type.

If you specify a type -- and if that type can be expressed as a string
containing a single digit -- then it works:

    Prelude> read "2" :: Float
    2.0

And otherwise it won't:

    Prelude> read "2" :: [Float]
    *** Exception: Prelude.read: no parse

You don't necessarily have to provide a type signature, though, if it can
be inferred from context:

    Prelude> floor $ read "2"
    2
    Prelude> :t floor
    floor :: (Integral b, RealFrac a) => a -> b
    Prelude> :t floor $ read "2"
    floor $ read "2" :: Integral b => b

Note that GHCI in this case still does not know exactly the type of (floor
$ read "2"), but thanks to the type of floor, it knows enough to proceed.

On Fri, May 27, 2016 at 11:38 AM, David Kraeutmann <kane at kane.cx> wrote:

> GHCi enables -XExtendedDefaultRules, which cause read "2" to default to ().
> On 5/27/2016 8:28 PM, Erik Rantapaa wrote:
> > Hi fellow Haskellers!
> >
> > If I bring up ghci and evaluate `read 2` I get the error "Prelude.read:
> no
> > parse"
> >
> > GHCi, version 7.10.2: http://www.haskell.org/ghc/  :? for help
> > Prelude> read "2"
> > *** Exception: Prelude.read: no parse
> >
> > Exactly how is this message coming about? I understand that `read` needs
> a
> > return type in order to determine which type class instance to run. So,
> in
> > this case, which type is `read` being asked to return?
> >
> > Thanks,
> > Erik
> >
> >
> >
> >
> > _______________________________________________
> > Haskell-Cafe mailing list
> > Haskell-Cafe at haskell.org
> > http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe
> >
>
>
>
> _______________________________________________
> Haskell-Cafe mailing list
> Haskell-Cafe at haskell.org
> http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe
>
>


-- 
Jeffrey Benjamin Brown
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.haskell.org/pipermail/haskell-cafe/attachments/20160527/04565b38/attachment.html>


More information about the Haskell-Cafe mailing list