[Haskell-cafe] Dynamically altering sort order

Denis Bueno dbueno at gmail.com
Sat May 2 21:38:33 EDT 2009


On Fri, Apr 24, 2009 at 19:49, Edward Kmett <ekmett at gmail.com> wrote:
> On Fri, Apr 24, 2009 at 5:11 PM, Denis Bueno <dbueno at gmail.com> wrote:
>> Is there an Ord instance that can be dynamically changed in this way?
>>
>> My first idea is something like this:
>>
>>    data CompareRecord = CR{ rCompare :: Record -> Record -> Ordering,
>> unCR :: Record }
>>    instance Ord CompareRecord where
>>        compare (CR cmp x) (CR _ y) = cmp x y
>>
>> where the rCompare field would be a function that is based on the
>> flags passed to the command-line problem.  But this has an ugly
>> asymmetry.  Does anyone have any other ideas?
>
> You can make a safer 'CompareRecord' using 'reflection' from hackage:

This is what I ended up doing and it worked out great.  Thanks for the
suggestion.

                              Denis


More information about the Haskell-Cafe mailing list