2005-01-19から1日間の記事一覧

Block と Module の違い

Mathematicaにおいてもっともsubtleな点の一つではないか。 説明 Blockは既存の変数を書き換える。 Moduleは新しく変数を生成する。 x = y; y = 0; z = 2;と定義してあるとする。このとき、x を評価すると 0 になる。 Block[{y = 1, z}, {x, y, z}]は {1, 1,…

Writer Monad

Int as Monoid 整数は加法についてモノイドである*1。Monoidのインスタンスにしてみよう。 instance Monoid Int where mempty = 0 mappend = (+)sum' :: [Int] -> Int sum' = mconcat vecPlus :: (Int, Int) -> (Int, Int) -> (Int, Int) vecPlus = mappend …