[Haskell-cafe] Re: [Haskell] pros and cons of static typing and side effects ?

Keean Schupke k.schupke at imperial.ac.uk
Tue Aug 16 17:23:28 EDT 2005


Lennart Augustsson wrote:

> Keean Schupke wrote:
>
>>
>>    quicksort :: IntList -> OrderedIntList
>>
>> By this we are asking the compiler to prove (by induction) that the 
>> function provided can only result in
>> correctly ordered lists - irrespective of what arguments it is given 
>> (ie proved true for any input)... This would have to be done 
>> symbolically but is not beyond what can be achieved using logic 
>> programming.
>
>
> But the output being ordered is not enough.  The output should also
> be a permutation of the input.  This can, of course, be expressed
> in a similar way.
>
Yes, the easiest way would be to constrain the output list to be a subset of
the input list, and vice-versa... something like:

    quicksort :: (x::IntList) -> (y::OrderedIntList) {- where x :< y && 
x :> y -}

of course you would have to use the correct definition of subset - you 
really want to
treat the list as a multi-set.

    Keean.



More information about the Haskell-Cafe mailing list