haskell-ja > Archives > 2012/11/04

2012/11/04 08:39:53 UTCJuppa
#
p.328のその箇所を、
  eval (Div t u)  =  
    do  x <- eval t
        y <- eval u
        if (y == 0  
            or x == raise "-"  
            or y == raise "-")  
           then  raise "division by zero"
           else  return (x div y)
として,instance宣言の(Raise e) >>= Raise e を書かないのでもいいんでしょうか?
現プログラムは私にはやっぱり少し理解しにくいので。
2012/11/04 10:01:48 UTCnobsun
#
do式の値の型は Monad m => m a なので instance Monad Exc の宣言は必須です.
2012/11/04 12:59:52 UTCJuppa
#
instance Monad Exc の宣言自体は書くのですが、
その中の(Raise e) >>= q = Raise e を書かずに
(あるいは書いても),eval(Div t u) のdo記述
部を上のように書くのではダメなのでしょうか?
2012/11/04 21:38:43 UTCnobsun
#
Juppaさんのevalの定義のなかで,xやyが表している値の型はなんでしょうか?