[Haskell-beginners] GHCi bug?

Bastian Erdnüß earthnut at web.de
Tue Nov 16 15:37:25 EST 2010


I didn't test the OP's example.  But if I do

  let x = y ; y = x

in GHCi and then run 'x', i can interrupt it with ^C.

As I understand the bug is that you cannot interrupt the infinite loop in this special case.

Btw. I thought

  instance Show Test where -- empty body

should not work.  An instance with no declaration should be just

  instance Show Test -- no body

Maybe the EOF after the 'where' has something todo with this "bug".

 Bastian


On Nov 16, 2010, at 13:17, Thomas Davie wrote:

> To explain that further as to why it's not a bug...
> 
> GHCi's job is to run the code you enter.  You asked it to show a value, so it executed the show function (correctly).  The default implementation called showPrec, which invoked show, etc.
> 
> There may well be a missing feature here (to check of you implement nothing other than the defaults which are very likely to loop), but not a bug.
> 
> Bob
> 
> On 16 Nov 2010, at 11:44, Ozgur Akgun wrote:
> 
>> Unfortunately, yes.
>> 
>> On 16 November 2010 11:39, Russ Abbott <russ.abbott at gmail.com> wrote:
>> I'm not sure what you are saying here. Are you saying that it's not a bug that GHCi went into a coma when I file was loaded and a prompt entered?
>> 
>> -- Russ
>> 
>> 
>> 
>> 
>> On Tue, Nov 16, 2010 at 3:34 AM, Ozgur Akgun <ozgurakgun at gmail.com> wrote:
>> 
>> On 16 November 2010 05:12, Russ Abbott <russ.abbott at gmail.com> wrote:
>> I know the code isn't correct. My point is that the compiler didn't complain when the code was loaded, and the interpreter died when it was executed. That shouldn't happen.
>> 
>> -- Russ
>> 
>> It would be cool for GHC to make an analysis about the instance methods of a type class, and their default implementations to find the minimal subset of methods you have to implement to get a valid (for some definition of valid) instance declaration. But it doesn't do such a thing. And it is not an easy task.
>> 
>> GHC only warns you if you do not implement a method which doesn't have a default implementation. In your example, this is not the case.
>> 
>> Best,
>> 
>> -- 
>> Ozgur Akgun
>> 
>> 
>> 
>> 
>> -- 
>> Ozgur Akgun
>> _______________________________________________
>> Beginners mailing list
>> Beginners at haskell.org
>> http://www.haskell.org/mailman/listinfo/beginners
> 
> _______________________________________________
> Beginners mailing list
> Beginners at haskell.org
> http://www.haskell.org/mailman/listinfo/beginners



More information about the Beginners mailing list