On Fri, Apr 24, 2009 at 15:22, Martijn van Steenbergen
<[email protected]> wrote:
> Hi Denis,
>
> Denis Bueno wrote:
>>
>> 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?
>
> Here's a solution that is more symmetrical but not necessarily prettier:
>
> newtype Wrap = Wrap { unwrap :: Record }
>
> instance Ord Wrap where
> ... your compare function here ...
The problem here is that the order is fixed. Statically. I can't
change it at runtime based on flags. (Right? Unless I'm missing
something....)
> But I don't think there's anything wrong with your original solution. You
> can write your own sortBy and hide (not export) the CompareRecord type:
>
> sortBy :: (a -> a -> Ord) -> [a] -> IO [a]
> sortBy cmp = map unCR . sort . map (CompareRecord cmp)
Right, that's what I was thinking, too. The asymmetry was giving me
the willies, though. =]
Denis
_______________________________________________
Haskell-Cafe mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/haskell-cafe