[Haskell-cafe] Monadic vs "pure" style (was: pros and cons of
sta tic typing and side effects)
Bulat Ziganshin
bulatz at HotPOP.com
Thu Sep 1 07:16:22 EDT 2005
Hello Juan,
Thursday, September 01, 2005, 12:03:15 PM, you wrote:
JCAB> instance MyNum Int where
JCAB> (.+) a b = a + b
JCAB> instance (Monad m, MyNum v) => MyNum (m v) where
JCAB> (.+) a b = do
JCAB> ra <- a
JCAB> rb <- b
JCAB> return (ra .+ rb)
JCAB> Just beware: to make this
i think, it is very practical. we can make alternative Prelude, this
question has been already discussed in light of redefining some list
functions (append, head...) as belonging to some Collection class
interestingly that Template Haskell, which uses Q monad to generate
unique identifiers, also use technique of defining rich set of
operations working immediately with monadic values. module
Language.Haskell.TH.Lib is full of definitions like this:
infixP p1 n p2 = do p1' <- p1
p2' <- p2
return (InfixP p1' n p2')
btw, such definitions can be simplified by using liftM/ap operations:
instance (Monad m, MyNum v) => MyNum (m v) where
(.+) = liftM2 (.+)
real program will also need mixed operations, for example addition of
variable and constant
--
Best regards,
Bulat mailto:bulatz at HotPOP.com
More information about the Haskell-Cafe
mailing list