[Haskell-cafe] Re: Proposal: TypeDirectedNameResolution

Achim Schneider barsoap at web.de
Thu Jul 30 05:20:14 EDT 2009


Jason Dagit <dagit at codersbase.com> wrote:

> My biggest fear is that of usability.
> 
> If I understand you correctly, then as you change module imports you
> change the meaning of the code in potentially non-obvious ways.  So
> this isn't too different than using unqualified imports and flipping
> between two modules that export the same function.  Except that as
> you increase the 'automatic'ness of it, it has the potential to trip
> up people.
>
My biggest fear is seeing it actually implemented as a language switch,
resulting in chaotic inferance behaviour as soon as imports change. 

I think the Right Place to do this is on the editor/ide level: Help the
programmer to use the right function by scanning through types, leave
the display uncluttered (but make precise information about what
function is referenced easily available) and save the source code fully
qualified.

Source code is not only made for human consumption but also as fodder
for batch processes, re-compilation with other compilers etc, so we
shouldn't put anything into it that can break way too easily, be it
because type inferance changes in subtle ways or some library merely
happens to export an additional function. 

Thus is the way of Malbolge,
be ye warned, ye who construeth
isomorphic brainb0rkz0rage.


>| Book 4 - Coding
>|
>| Thus spake the master programmer:
>|
>| ``A well-written program is its own heaven; a poorly-written program
>| is its own hell.'' 
>| 
 [...]
>| A program should follow the `Law of Least Astonishment'. What is this
>| law? It is simply that the program should always respond to the user
>| in the way that astonishes him least.
>| 
>| A program, no matter how complex, should act as a single unit. The
>| program should be directed by the logic within rather than by outward
>| appearances.
>| 
>| If the program fails in these requirements, it will be in a state of
>| disorder and confusion. The only way to correct this is to rewrite
>| the program. 
>|
 [...]

etc. pp. qed.

-- 
(c) this sig last receiving data processing entity. Inspect headers
for copyright history. All rights reserved. Copying, hiring, renting,
performance and/or quoting of this signature prohibited.




More information about the Haskell-Cafe mailing list