Re:http://d.hatena.ne.jp/syd_syd/20050120#p1

appAndShow (Func f) (Obj x) = let f' = fromJust $ cast f in show $ f' xだと、f'の型は、引数の型はObjの中身から決まりますが、返り値については showの引数なので Show a castの返り値となっている関数のものだから Typeable a -- (Obj (x :: x)) f' :…

国家的見地からのミーガン法の経済学

ある犯罪の再犯者率(犯罪者のうち再犯者がしめる割合)がであったとする。ミーガン法によって、再犯者率が例えば、になるとする。どのような効果が期待できるだろうか? 答え 件ほどその犯罪が減ることを期待できる。ここではその年度のミーガン法を実施しな…

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 …

ページのタイトルを変更してみる。でも重要なのはURIです。 正確にはsome of the eight stones for meな感じ。 >

Tree Monad

探索とは、まず解の候補を葉とする木を作って*1、それからその木の枝をあるアルゴリズムで辿って解を発見することである*2。リストによるバックトラックを利用した探索は、木を作る端から全部フラットにして深さ優先探索をしているのである。探索アルゴリズ…

getSkipChan

http://d.hatena.ne.jp/syd_syd/20041224#1103830417より。

解読

一時間半もかかったが解読できたのでメモ。腕力がない… 相異点 最初にtransposeしてColor視点にはしない*1 module D050115_2 where import Data.List type Color = Int type Box = [Int] tama :: [Box] -> (Int, [[Color]]) tama = head . tamas tamas boxes…

リストを要素数が指定されたグループで分ける

Quiz 次をみたす関数groupsを定義せよ。 groups [p_1, p_2, ..., p_n] listは { {s_1, s_2, ..., s_n} | s_i ⊂ list, #s_i = p_i, s_i ∩ s_j = φ }を返す。順序は(与えられたリストの並びを基準にして)Haskellのsortが並べる順であることが望ましい。 例 *Gr…

Search

このコードにいたく感心したので、探索について考えた。 dfs :: (a -> [a]) -> a -> [a] dfs f x = x:(f x >>= dfs f)bfs :: (a -> [a]) -> a -> [a] bfs f = bfs' . (:[]) where bfs' xs = xs ++ bfs' (xs >>= f)http://www.lab2.kuis.kyoto-u.ac.jp/~hanat…

仕込み Monad Transformer

[id:yts:20050112#p2]の続き。ReaderTの特別な場合なので: module ReaderTick where import Control.Monad.Reader type TickT m a = ReaderT (m ()) m a runTickT :: Monad m => TickT m a -> m () -> m a runTickT = runReaderT tick :: Monad m => m a -> …

できればいいのだが。 前のn日分では日付順に表示されるという設定が クリックするのが面倒だ。 一日毎に表示されるようにしてみたが今度は何度も ソースコードを張り付ける時にはそうもいかない。 困る。下から読む事に慣れるという手もあるが 早い日付のも…

仕込みIO

http://d.hatena.ne.jp/syd_syd/20050111#p1モナド則は満たしません。 *Main> flip fromOIO signal $ return () >>= return >>= return ! ! !liftされたアクションに「タグ」をつけてそのタグが出てくるごとに何かする、という感じでやればいいような気がし…

リストの要素をn番飛ばし毎にグループに分ける

http://www.sampou.org/cgi-bin/haskell.cgi?blog:Everyday%3a2005-01-11&l=jp 取り残された気分だけど、最短記録部門(何?)で挑戦。 f n = foldr (\x y -> (x:last y):init y) (replicate n []) g n=foldr(\x y->(x:last y):init y)$[1..n]>>[[]]それぞれ 5…

via: Moved http://amb.vis.ne.jp/mozilla/scrapbook/は便利。 http://amb.vis.ne.jp/mozilla/scrapbook/todo.php?lang=jaで 取り込んだページ中に直接コメントを貼り付ける編集機能 サイト丸ごと保存、リンクをたどってページを収集する機能(2階層以上) …

一冊ぐらいグラフ理論の教科書を買っておきたいと思ったのですが、どれがいいやらわかりません。Introduction to graph theory, R.J. Wilson が有名なようですが、お薦めがあったら教えてください。 http://www.amazon.com/exec/obidos/tg/detail/-/04862477…

http://www.lab2.kuis.kyoto-u.ac.jp/~hanatani/tdiary/?date=20050110 辺彩色という概念があるんですね。単調増加の意味はわかりません…

昨日の[Puzzle] 情報共有と電話の回数[id:yts:20050110]に追記。

google:気をつけろ スタンド攻撃だ

Hack Parsec

Parsecを少し改造*1した。whiteSpaceなどの定義を(矛盾無く)変更できるようにした。 module Test where import Text.ParserCombinators.Parsec as P import Text.ParserCombinators.Parsec.Language as P import Text.ParserCombinators.Parsec.Char as P im…

情報共有と電話の回数

私「N人の人がいて、その人たちはみんなすでに秘密を共有しているとする。そこにもう1人の人がやってきたとする」長男「なるほど。その人のことを知るのにN回電話が必要なんだね」私「その通り。情報がどこかでまとまるとしても、N人の人は少なくとも電話を1…

LCD Numbers

Quiz: [QUIZ] LCD Numbers (#14) via: http://www.sampou.org/cgi-bin/cahier.cgi?blog%3aCahier%3a2005-01-08 (日付指定のリンクはできないのだろうか?)コメントで教えて頂きました。 module Main where import Data.Array (listArray, (!)) import Data.L…

巡回置換の積 (2)

http://www.sampou.org/cgi-bin/haskell.cgi?blog%3aEveryday%3a2005-01-04&l=jpより。篩い。 sieve _ [] = [] sieve elem (x:xs) = x:sieve elem [y | y <- xs, not (head y `elem` x)] orbits elem span = sieve elem . map span数学的にはelemはパラメー…

巡回置換の積

http://www.sampou.org/cgi-bin/haskell.cgi?blog%3aEveryday%3a2005-01-04&l=jpより。 import Data.Graph (stronglyConnComp, flattenSCC) toCycles xs = filter ((1 /=) . length) $ map flattenSCC $ stronglyConnComp [(x, x, [y]) | (x, y) <- xs]*D050…

Continuation Monad (3)

[Haskell] Continuation Monad (2) [id:yts:20050103#p1] の続き。 13.3 Tree matching まずTree型の定義をしておく。 data Tree a = Tree [Tree a] | Leaf a deriving (Eq, Show) car (Tree (x:xs)) = x cdr (Tree (x:xs)) = Tree xs isNull (Tree []) = Tr…

ZipN

率直な感想…構文木を作るコード書くのめんどくさすぎ…自分で書こうと思っても全然書けない。慣れの問題なのだろうか…? 2004-12-27 「構文木」というのを意識しすぎなのだと思います。 例3 任意個のzip (引用略) zip3 = $(zipN 3)と書ければ嬉しいという話。 …

Continuation Monad (2)

[Haskell] Continuation Monad (1) [id:yts:20050102#p2] の続き。 13.2 Escaping continuations Example (define list-product (lambda (s) (call/cc (lambda (exit) (let recur ((s s)) (if (null? s) 1 (if (= (car s) 0) (exit 0) (* (car s) (recur (cd…

可変長引数の関数?

Movedのminor nit. イヤなことにはかわりなし。 class VAFun a r f | f -> r where withVAList :: ([a] -> r) -> f instance VAFun a Int Int where withVAList g = g [] instance VAFun a r x => VAFun a r (a -> x) where withVAList g x = withVAList (g …

Continuation Monad (1)

t-y-schemeの継続についての章であるChapter 13をHaskellで書いてみる。まず13.1章。 13.1 call-with-current-continuation Example 1 (+ 1 (call/cc (lambda (k) (+ 2 (k 3))))) => 4 Continuationモナドを利用する。(+)や整数リテラルがtype classのメソッ…

新年おめでとうございます。