タグ

ブックマーク / rainyday.blog.ss-blog.jp (2)

  • Scala による diff の実装:Rainy Day Codings:So-net blog

    Scala で diff を書いてみた」[1] という記事に触発されて [2] の論文や [3] の解説を読んで diff のアルゴリズムを勉強して自分なりに Scala で実装してみました。 これは [2] で "An O((M+N)D) Greedy Algorithm" と呼ばれているほうの実装で、論文の後半では改良についても書いてあるけどそちらは読んでいません。 私なりに工夫をした部分は全体的に副作用を排除した所とエディットグラフの格子点をオブジェクトとして表現した点です。 元論文の擬似コードで "a number of simple optimizations are employed" とされている部分は可読性の観点から取り入れませんでした。ただ元論文が「D回の編集で到達する(対角線 k 毎の)最遠点の集合」を配列で管理しているのを Set で管理するようにしたのは当はよろ

  • Thinking in Erlang 日本語訳:Rainy Day Codings:So-net blog

    Erlang の入門ドキュメントで Thinking in Erlang [1] というのが Creative Commons ライセンスで公開されていたのでそれを日語に訳して [2] Scribd においてみました。なおオリジナルは Word なので印刷したい場合は Word から印刷するのが一番きれいだと思います。 基的に Java などの経験があって関数型はよく知らないという人向けですが、関数型言語既習者でも Erlang 特有の考え方で新鮮な部分がいくつかあると思います。特にエラー処理の考え方 (Let it Fail) の部分は面白くて、例えば gen_tcp:listen という関数が成否とソケットをまとめてタプルで返すとしたら {ok, ListenSocket} = gen_tcp:listen(8080, [binary]) としてしまう(ok は定数で Listen

  • 1