タグ

ブックマーク / wasabiz.hatenablog.com (2)

  • Common Lispでモナドする話 - IT系で覚醒めたい

    昨日こんなものがTLに流れてきた Clojureでモナド内包表記とStateモナド - http://basking-cat.blogspot.jp/2012/10/clojurestate.html なかなかおもしろいのでCLでも実装。 コアの部分はこれだけ。あとは型クラスよろしくモナドごとにメソッドを定義していく。 使い方はこんな感じ (perform ((a (list 1)) (b (list 2 3)) (c (list 3 4 5))) (+ a b c)) ; => (6 7 8 7 8 9) すばらしい。また別の例 (defun double-list (x) (list x x)) (perform ((a '(1 2 3)) (b (double-list a)) (c (double-list b))) c) ; => (1 1 1 1 2 2 2 2 3 3 3

  • 限定継続の(すごくわかりやすい(かもしれない))解説 - wasabizの日記

    2013-10-03 限定継続の(すごくわかりやすい(かもしれない))解説 ** この記事はmrubyで限定継続(shift/reset)を実装した話の一部です 限定継続とは一般化された継続のようなもので、切り取るスタックの底を指定できるcallccのようなものです。といってもこうやって言葉を並べているだけだと何を言っているか全くわからないと思うのでここから具体的に説明していきます。 限定継続にはいくつか種類があるんですが、とりあえず今はshift/resetという二つの演算子(二つで一つのペアです)を説明します。 説明で使っているAPI mruby-partcontの以下のAPIを使っています。 class Continuation self[*ret] -> value call(*ret) -> value Kernel.#reset Kernel.#shift reset rese

    Hash
    Hash 2013/10/03
    飯食いながら読んだ. よくわかった(かもしれない)
  • 1