[Haskell-cafe] Re: Typeclass vs. Prolog programming

oleg at pobox.com oleg at pobox.com
Sat Sep 30 03:43:19 EDT 2006


I previously wrote:
> The typechecker commits to the instance
> and adds to the current constraints
>         TypeCast x Int, Ord Bool, Eq Bool
> The latter two are obviously satisfied and so discharged. The former
> leads to the substitution {x->Int}.

I should have been more precise and said: 
	The former _eventually_ leads to the substitution {x->Int}.

Your analysis is right on the mark. That's exactly how I think of
TypeCast.


> This is all very beautiful, but it's a little annoying that the
> cornerstone "silver bullet" TypeCast has to be defined in a way that
> fools the typechecker into doing the right thing in spite of itself.

One of the drafts of the HList paper, when describing TypeCast,
literally had a phrase about `fooling the typechecker'...

Well, it seems things like TypeCast were not envisioned by the
Founding Fathers. In this respect, the story of C++ templates come to
mind. My feeling is that we're still discovering the capabilities of
the Haskell typechecker and the right abstractions. We should view
TypeCast as an ungainly _encoding_ of a simple abstraction, or just as
a tool for implementing type-level typecase and local improvement
rules. When the right abstraction emerges (and perhaps it already has:
CHR), GHC might implement it directly. Until then, we can use the
encoding...



More information about the Haskell-Cafe mailing list