On 1/26/06, John Hughes <[EMAIL PROTECTED]> wrote: > I'd be against this--its semantics isn't clear enough to me. For example, > I usually assume id e = e, for any e, but > > id (f _ x) y = id (\y->f y x) y = f y x > /= > f _ x y = \z -> f z x y > > Or would (f _ x) y and f _ x y maybe be different? That would fix the > problem above, while introducing another. Please, no!
They should be different for this to work. The reasonable thing to do would be to rewrite every (e _ a1 a2 ... an) as (\x -> (e x a1 a2 ... an)) and the parentheses should be mandatory. Note that this can be done recursively, so that e.g. (f _ y _ t) ==> (\x1 -> (f x1 y _ t)) ==> (\x1 -> (\x2 -> (f x1 y x2 t))) I see this as no worse than operator sections: we already have (- x) and (-) x meaning different things. Having in mind that (e _ ...) is just syntax, it should be easy to keep it separate from application, so f x y z will still be the same as ((f x) y) z. > > John Cheers, Dinko _______________________________________________ Haskell-prime mailing list Haskell-prime@haskell.org http://haskell.org/mailman/listinfo/haskell-prime