I've been trying to implement EnumMap as a wrapper for IntMap. Here's the first problem I ran into:
> IntMap.insertWithKey :: (Key -> a -> a -> a) -> Key -> a -> IntMap a -> > IntMap a I'd like to translate this to something like: > EnumMap.insertWithKey :: Enum k => (Key k -> a -> a -> a) -> Key k -> a -> > EnumMap k a -> EnumMap k a My initial thought was just to make it a normal wrapper: > EnumMap.insertWithKey f k v m = IntMap.insertWithKey f (unKey k) v (unEnumMap > m) The obvious problem here is the type of `f' expected by the wrapper function and the internal function. Either we force the wrapper to take a function that takes an Int as the first parameter, or we rewrite the logic of insertWithKey to allow us to use the proper (Key k) type. I don't see an obvious way around this--am I missing something? On Sat, Aug 8, 2009 at 4:41 PM, Henning Thielemann<[email protected]> wrote: > > On Sat, 8 Aug 2009, John Van Enk wrote: > >> Hi List, >> >> I've uploaded a first version of EnumMap to hackage. >> >> EnumMap is a generalization of IntMap that constrains the key to Enum >> rather than forcing it to be Int. I have no idea what impact this has >> on performance, but it still passes all the tests that ship with >> IntMap. (My guess is that performance will be similar/identical unless >> I've missed something.) > > Could that be implemented as wrapper around IntMap? > _______________________________________________ Haskell-Cafe mailing list [email protected] http://www.haskell.org/mailman/listinfo/haskell-cafe
