[Haskell-cafe] The (!) operation
Christopher Done
chrisdone at googlemail.com
Thu Mar 8 19:53:48 CET 2012
On 8 March 2012 18:32, Anthony Cowley <acowley at 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 at 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… ;-)
More information about the Haskell-Cafe
mailing list