On Wed, Apr 19, 2017 at 4:25 PM, Doug McIlroy <doug@cs.dartmouth.edu> wrote:
I trust that "x = 10" above does NOT t mean the same as "let x = 10".
If it did, then it wouldn't mean what it does in Haskell.
Then code tried successfully in GHCI could fail in GHC.

Compare this GHCI session
        > let x = 10
        > :t x
        x :: Num a => a
        > x + 0.0
        10.0
to this, in which x = 10 has its Haskell meaning
        > :! cat test.hs
        x = 10
        > :load test.hs
        > :t x
        x :: Integer
        > x + 0.0
        No instance for (Fractional Integer) arising from the literal ‘0.0’.

That's got nothing to do with 'let', it's about ghci having the monomorphism restriction turned off by default. (try ":showi language")

--
brandon s allbery kf8nh                               sine nomine associates
allbery.b@gmail.com                                  ballbery@sinenomine.net
unix, openafs, kerberos, infrastructure, xmonad        http://sinenomine.net