Robert Dockins <[EMAIL PROTECTED]> wrote:
Consistency. Almost all the other API functions take the data
structure argument last. This seems to be a kind of de facto
standard and deviations from it are likely to cause confusion.
I'd always assumed that the reason that data structure functions take the data
structure last is because of the commonest case of partial application, where you
want a function of the form Struct -> Struct.
For instance suppose you had:
type MyState = State (Sequence Int)
myStateFunc1:: MyState ()
myStateFunc1 = do
x <- someThing
modify $ lcons x
Now you want the equivalent for rcons:
myStateFunc2 :: MyState ()
myStateFunc2 = do
x <- someThing
modify $ (flip rcons) x
The extra "flip" is confusing and distracting. It gets worse for functions of
more than two arguments: you wind up needing a lambda.
(BTW I haven't checked the code against the reference manual, so sorry if I've
got it a bit wrong).
Paul.
_______________________________________________
Haskell mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/haskell