On 8 March 2012 18:32, Anthony Cowley <acow...@seas.upenn.edu> wrote: > Perhaps Data.Key meets your needs? > > http://hackage.haskell.org/packages/archive/keys/2.1.2/doc/html/Data-Key.html
Ah, perhaps indeed. Thanks! On 8 March 2012 19:12, Francesco Mazzoli <f...@mazzo.li> wrote: > The type signature that you wrote is very generic and doesn't help in > introducing effects while retrieving the indexed value, which I imagine is > what you wanted to do. Because Maybe is already a monad and it's nice to fail in the monad of choice, e.g. if I'm in the list monad I get empty list instead, or if I'm in the Result monad from JSON it'll fail in there. ‘Course "fail" is suboptimal and MonadError might be better. > I guess you could define a type family for the monad type as well, e.g.: > > type family Index f > type family IndexMonad f :: * -> * > > class Functor f => Indexed f where > index :: Index f -> f a -> (IndexMonad f) (Maybe a) Right, that sounds interesting, similar to Data.Key above! It seems like a type family is a good approach. I'll try this "keys" library out. Grazie mille, a dopo… ;-) _______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe