[Haskell-cafe] Monad.Reader 8: Haskell, the new C++

Manuel M T Chakravarty chak at cse.unsw.edu.au
Thu Sep 13 21:05:34 EDT 2007


Pepe Iborra wrote,
>> For a taste, see Instant Insanity transliterated in this functional 
>> language:
>>
>> http://hpaste.org/2689
>>
> 
> I thought I'd better paste here the code for Instant Insanity with Type 
> Families. Otherwise it will vanish in a short time.
> I took the opportunity to clean it up a bit.

Thanks!

> Although AT are not a supported feature, the code works in a 6.8.1 
> snapshot.
> But note that you cannot actually see the solution, as there is no way 
> to ask
> GHCi to display the normalized types.

Just to complete transferring the discussion from the ephemeral 
hpaste to the mailing list.  My response to the lack of being able 
to display normalised types was that GHC actually goes to 
considerable trouble to preserve the original (non-normalised types) 
for error messages and other output, as this usually makes these 
messages easier to understand (eg, you usually rather like String 
than [Char] in an error message).

However, to debug your type-level programs (or to abuse the type 
checker as an evaluator) this is clearly inconvenient.  So, the plan 
is to add a ghci command that given a type will print its normal 
form.  On hpaste, Pepe also suggested a flag to instruct the 
compiler to generally print normalised instead of unnormalised 
types.  However, I think a form of eval for types on the command 
line is the most direct way of experimenting with type families and 
debugging type-level programs.

Manuel

PS: And, no, you won't be able to set breakpoints in type-level
     programs...


More information about the Haskell-Cafe mailing list