Hi!
I was told by Magnus Carlsson and Enno Scholz that my proposal
     lookup :: (Eq a, Monad m, MonadZero n) => a -> m (a,b) -> n b
     lookup i ps = do (k,v) <- ps
                      if k==i then return v else zero
isn't well-typed. I'm sorry for this bug. (I cannot access a compiler for
Haskell 1.3 yet.)
So let's do it in less generality:
     lookup :: (Eq a, MonadZero m) => a -> [(a,b)] -> m b
     lookup i = foldr (\ (k,v) rest -> if k==i then return v else rest) zero
for example. I'll start another attempt at the original version as soon as I
can test it...
My apologies,
  Klaus



Reply via email to