[Haskell-cafe] function unique

Jonathan Cast jcast at ou.edu
Wed Jul 11 16:59:45 EDT 2007


On Wednesday 11 July 2007, Hugh Perkins wrote:
> Well, there's a fundamental reason it wont work for Haskell: we dont
> actually define the names of the parameters to the function!
>
> Have a look at the function above, the function is defined as:
>
> testunique' :: Eq a => [a] -> [a] -> [a]
> testunique' [] elementssofar = []
> testunique' (x:xs) elementssofar
>
> There's an agreement here that the second parameter is called
> "elementssofar"... but only because I was consistent in my naming in this
> example.  What if we had multiple constructors for a particular type?
>
> The first argument has no obvious naming at all.
>
> We could do things like write it in comments:
>
> testunique' :: Eq a => [a] -> [a] -> [a]
> -- testunique' :: remainingelements -> elementssofar -> uniqueelements
> testunique' [] elementssofar = []
> testunique' (x:xs) elementssofar
>
> ... but we all know that no-one bothers writing comments, and certainly
> never maintaining them, and in any case this is becoming insanely difficult
> to read.
>
> I dont have a solution, apart from using C# for production programming ;-)
> , but things like this are really important to solve in any "mainstream"
> version of Haskell.

One could put up the Haddock doc-comment.  Or, say, one could extend Haddock 
to support parameter names:

testunique' :: Eq a
	    => [a] -- ^ $list List of elements to test
            -> [a] -- ^ $elementssofar List of elements seen thus far
            -> [a] -- ^ List of unique elements in 'list'.

No patch forthcoming from this corner, though.

Jonathan Cast
http://sourceforge.net/projects/fid-core
http://sourceforge.net/projects/fid-emacs


More information about the Haskell-Cafe mailing list