Jonathan Cast <[EMAIL PROTECTED]> wrote: > On 13 Jan 2008, at 5:27 PM, Achim Schneider wrote: > > > "Neil Mitchell" <[EMAIL PROTECTED]> wrote: > > > >> Hi, > >> > >> It's nice to write functions in point free style: > >> > >> f = sort . nub > >> > >> But sometimes I have to add an extra case, on a certain value: > >> > >> f [] = [1] > >> f = sort . nub > >> > >> But now these equations have different arities, and its rejected by > >> Haskell. Why does this not simply desugar to: > >> > >> f [] = [1] > >> f x = (sort . nub) x > >> > >> i.e. lift the arities to the longest argument list. > >> > >> Is there a reason this isn't done? > >> > > Answer #2: > > > > Because you can't write > > > > f x = case x of > > [] -> [1] > > -> sort.nub > > But why not? > Because arities aren't lifted to the longest argument list.
> Treating case as syntax sugar for a higher-order > function, so that all binding occurrences of lambdas in the > unsugared code are associated with lambdas, is a good thing, and > offers a natural way of desugaring the above, one case at a time. > What about f x = [1] f - = sort.nub ? You could also do things like f - x = (foo x).bar with it. No more rewriting of pointfree code because of added arguments... -- (c) this sig last receiving data processing entity. Inspect headers for past copyright information. All rights reserved. Unauthorised copying, hiring, renting, public performance and/or broadcasting of this signature prohibited. _______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe