[Haskell-cafe] Re: All equations must have the same arity - why?
Jonathan Cast
jonathanccast at fastmail.fm
Sun Jan 13 20:36:13 EST 2008
On 13 Jan 2008, at 5:27 PM, Achim Schneider wrote:
> "Neil Mitchell" <ndmitchell at gmail.com> 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? 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.
jcc
More information about the Haskell-Cafe
mailing list