タグ

ブックマーク / sshi.hatenadiary.org (3)

  • wcコマンドの実装を通してArrowの気持ちを推し量ってみた - sshi.Continual

    "モナドの一般化"なんていう敷居がやたら高いふれこみのArrowをちょろっと調べてみた。 主に、ha-tanさんのサイト(http://d.hatena.ne.jp/ha-tan/20070810/1186744818)と、そこから参照されているページをひととおり読んだ。 モナドがわかる人には多分、 Monadは、値をからくり箱に入れたもの。からくり箱は基的に(ヘンな)値。 Arrowは、関数をからくり箱に入れたもの。からくり箱は基的に(ヘンな)関数。 3分で解るHaskellのArrowの基メモ - よくわかりません という説明でなんとなく通じるかなあ。 Monadが型クラスなようにArrowも型クラス。でもって、Arrowの場合はからくり箱の中身が関数なので、型情報によって処理をふりわけるっていう性質がモナドより強い(気がする)。ストリームファンクションはそのよい例で、関数の型を

    wcコマンドの実装を通してArrowの気持ちを推し量ってみた - sshi.Continual
  • もなもなモナド ReaderモナドとWriterモナドの合成 - sshi.Continual

    モナドの合成はさっぱりわからないままだったので、試しにReaderモナドとWriterモナドの合成をやってみた。 リーフは数値、ブランチにはラベルがついてる木構造データを対象に、 木構造データのリーフの合計を求める関数 さらに、Writerモナドを使って足したリーフの数字を順番にログにとる関数 さらに、Readerモナドを使って親のラベルもログに取る関数 の順番で変更が少ないように実装してみたつもり。それぞれmain1,main2,main3に対応する。これでちゃんと動く理屈はあまりちゃんとわかってない。わかったら後で書く。 以下ソース data T = B String [T] | L Int sample = B "root" [L 5,B "child" [L 1,L 10],L 2] -- main1 = sum_leaf sample sum_leaf (L n) = n sum

    もなもなモナド ReaderモナドとWriterモナドの合成 - sshi.Continual
  • LL魂(LLSpirit)に行ってきましたよ - sshi.Continual

    奇跡的に遅刻もせず参加。これまた奇跡的に途中眠りこけることもなく、大変楽しめました。ボランティアで支えてるスタッフさん達に感謝感謝。ああいう運営は大変だろうなあ。 忘れないうちに誤解と偏見もそのまま列挙。個人的には振幅の激しい一日だった。 あまりに長いので久し振りにおりたたみ。後で書きたしたりするかもしれません。 和田先生の話 いつもの(っていっても数回しか聞いたことないが)和田節健在。やっぱりおもしろい。 ハック魂なお題でソフトウェアじゃなくてハードウェア的なものを持ってくるのも技有り。 ダヴィンチ展は僕も見にいったけど、その時もダヴィンチが今の時代に生まれてたらハッカーになってたかもな、とは思った。 いつぞやの、計算尺シミュレータも思いだした。 Language Update Perl 、、の話はよくわからない、というか他人事としか聞こえてこない…。 Io やっぱりおもしろそうだ。Jo

    LL魂(LLSpirit)に行ってきましたよ - sshi.Continual
  • 1