
Am Samstag, 15. Januar 2005 10:05 schrieben Sie:
Hi Daniel,
On Fri, 14 Jan 2005 21:57:25 +0100, Daniel Fischer
wrote: <snip>
Finally, in several contexts I needed to cons an element to one of a pair of lists, so I defined
infixr 5 &,§ ^^^ Please be aware that you won't find this paragraph symbol on a uk or us keyboard. AFAIK it is just on the german one.
(&) :: a -> ([a],[b]) -> ([a],[b]) x & (xs,ys) = (x:xs,ys)
(§) :: b -> ([a],[b]) -> ([a],[b]) y § (xs,ys) = (xs,y:ys).
I find them useful (though I don't like the symbols, if you have any better ideas, thx) and for splitAt, (&) saves another reduction per step.
I think these operators should be more related to ":" like ":&" "&:" or Yes, but as Stefan Holdermans already wrote, (:&) is illegal (operatornames beginning with ':' are infix Constructors). Since I use these operators mostly infix (up to now exclusively), I don't really want to type `consfst` all the time, hence I would need some stronger argument to convice me of using function names (after all, readability is to a large extent a matter of familiarity, you couldn't immediately understand ':', '+' ... either if you weren't thoroughly familiar with them).
A stronger relation to ':' is absolutely desirable, maybe something like \: and /: would be better. Cheers, Daniel