■
Monadic Semanticsって、どこがdenotationalなんだろう。例えば、簡易電卓のMonadic Semanticsって
data CTerm a = Const a | Add (CTerm a) (CTerm a) | Sub (CTerm a) (CTerm a) | Mul (CTerm a) (CTerm a) --compute :: (Monad m , Num a) => CTerm t -> m a compute t = case t of Const n -> (return n) Add t1 t2 -> (compute t1)>>=(\a -> (compute t2)>>=(\b -> (return (a+b)))) Sub t1 t2 -> (do{a<-(compute t1);b<-(compute t2);(return (a-b))}) Mul t1 t2 -> (do{a<-(compute t1);b<-(compute t2);(return (a*b))})
な感じだけど、これは、もう実行可能だし。インタープリタとSemanticsの差がよく分からない(それはいいことかもしれないけど)。R5RSも、ラムダ計算なので、少し手を加えるだけで、実行可能になるけど。
んー、operationalとdenotationalの差がよくわからん。領域理論とかは、直接実行できない、役に立たない代物で、表示的という感じがするけど。一部の言語は数学的で宣言的な記述を書くと実行可能というのが謳い文句の一つだから、操作的か表示的かの差って、あんまりなくなるのか。