[Haskell-cafe] Crash in GHCI - what is the correct behavior here?

Zachary Turner divisortheory at gmail.com
Thu Mar 19 00:21:08 EDT 2009


Basically just learning haskell, I would have posted this in the beginners
list but since it involves a segfault of GHCI, I figured it might be worth
posting here.

I was trying to get a good understanding of local variable scoping issues,
so I tried the following:

f :: (Num a) => a -> a
f x =
    let p = x*x
    in
        let p = x*p
        in p

I have some background in ML, which led me to believe that what should
happen here is that the function would return x^3.  Instead, GHCI just
completely terminates, I guess with a segfault.  What's the "correct"
behavior here?  Should it even compile?  I understand that you can't
redefine the same symbol twice in the same scope, so I tried this
specifically to see what would happen if you defined the same variable again
in a nested scope.  I thought it would just shadow the original declaration,
while still using the original p to calculate the value of the new p.  I
don't think the problem is the re-declaration of the same symbol in a nested
scope (although if someone could clarify that would be nice), but rather the
fact that I've attempted to use the previous declaration of p in defining
the new declaration of p.

Would it be a safe assumption that a bug report should be submitted over
this?
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://www.haskell.org/pipermail/haskell-cafe/attachments/20090318/a61f61a3/attachment.htm


More information about the Haskell-Cafe mailing list