Strange error in show for datatype

Carl R. Witty cwitty@newtonlabs.com
03 Oct 2001 17:58:50 -0700


Bjorn Lisper <lisper@it.kth.se> writes:

> data LispList t = Atom t | LispList [LispList t] | Str [Char]
> 
> instance Show t => Show (LispList t) where
>     show (Atom t) = show t
>     show (LispList t) = show t
>     show (Str t) = show t
> 
> hugsprompt>  (LispList [Atom 1, Str "HEJ"]) ==> [1,"HEJ"]
> hugsprompt>  (LispList [Str "HEJ",Atom 1]) ==> "Cannot find show function...."
> 
> So there is a problem when the value is of form Str string or where such a
> value is first in the list l in a value of the form LispList l. Oddly
> enough, such values may appear at other positions without causing any
> problems.

Are you sure about that?  I can't reproduce the above results in hugs
(Hugs 98, February 2000) or ghci (5.02).  I get a much simpler answer:
if the s-expression includes an Atom term, it works; otherwise you get
a type error.  In particular, for the second example above
	(LispList [Str "HEJ", Atom 1])
both ghci and hugs produce the expected result, rather than failing.

Carl Witty