[Haskell-cafe] Line noise

Andrew Coppin andrewcoppin at btinternet.com
Mon Sep 22 02:32:57 EDT 2008


Mads Lindstrøm wrote:
> Andrew Coppin wrote:
>
>   
>> Idiomatic Haskell seems to consist *only* of single-letter variable 
>> names.
>>     
>
> The more abstract (generic) thing gets, the less likely you will be able
> to find a telling name. And if you cannot find a telling name, you can
> just as well make it short. And as Haskell is more abstract, we get more
> short identifiers. E.g. in your earlier sorting function:
>
>   qsort (x:xs) = ...
>
> what would you propose to call the elements?

Well, qsort (element : list) would be maximally intuitive, but who's 
going to implement it like that? ;-)

Now of course in C, you'd be forced to write something like

  list qsort(int x, list xs)

which makes it completely unambiguous what these things are - what their 
type is. But in Haskell, even if you add a type signature:

  qsort:: (Ord x) => [x] -> [x]

Nobody is going to realise that "[x]" means a list. And it's still not 
clear where ":" comes from, or... well you can see why people are 
getting lost! ;-)

> However, I will grant you that Map k v, could have used longer type
> variables. But we are not alone with using one letter type variable
> names http://java.sun.com/javase/6/docs/api/java/util/HashMap.html . And
> frankly, in this specific case, I think most programmers (Haskell or
> non-Haskell) will be able to guess what k and v means, when they are
> standing right after Map.
>   

Only if you can figure out that "Map" means what every other programming 
language on the face of the Earth calls a "dictionary". (This took me a 
while!)



More information about the Haskell-Cafe mailing list