[Haskell] Re: Parameterized Show

Benjamin Franksen benjamin.franksen at bessy.de
Fri Nov 19 09:27:08 EST 2004

On Friday 19 November 2004 08:54, Adrian Hey wrote:
> On Tuesday 16 Nov 2004 1:52 pm, Ben Rudiak-Gould wrote:
> > George Russell wrote:
> >  > Sorry, but I like implicit parameters, I use them, and I'm not
> >  > going to stop using them because beta conversion no longer
> >  > preserves semantics.
> >
> > You'll find that many people here don't agree with this view in
> > general (though there's been surprisingly little backlash against
> > implicit parameters in particular).
> I would like to lash against them. I was unaware of the problems you
> describe, but their existence doesn't surprise me. In view of the
> controversy that a certain other perfectly safe, reasonable (and
> necessary) language extension proposal has generated recently the
> ready acceptance of this kind of brokeness is surprising. Frankly,
> the idea that anyone would want to jump through hoops to add them to
> a purely functional language sounds bizarre to me. Safe beta
> conversion really ought to be a sacred cow.
> Still, at least they're not enabled by default. With any luck we
> won't see too many people shooting themselves in the foot because
> they're too lazy to pass their parameters explicitly.

Implicit parameters are evil, agreed. Their deficiencies should be added 
as a warning to the docs (with many exclamation marks). But toplevel 
things with identity (TWI) are evil as well, *especially* if they are 
easy to use. Implicit parameters at least have the advantage that they 
are obscure and  require changes to function signatures, so that 
(hopefully) not many people use them.

The toplevel '<-' bindings proposal encourages bad library and program 
design by making TWIs easy and (apparently) safe. It is better to make 
people think hard about how to avoid them in the first place. (BTW, 
toplevel stdin, stdout, and stderr are evil too.)

I know of exactly one good reason to use TWIs in Haskell. Which is: to 
interface C libraries that are broken because of the fact that TWIs are 
so easy to create in C.

Introducing TWIs in Haskell is like deliberately spreading a disease 
into an area that has avoided it up to now by strict quarantine 
measures. Of course these measures are often inconvenient and some 
effort is required in order to make communication with the ill populace 
possible. And of course every now and then people come along 
complaining that everything would be easier if one would just remove 
all those decontamination barriers...


More information about the Haskell mailing list