タグ

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

  • ファイルシステムとしての Git - 言語ゲーム

    Git のコマンド体系は全く歴史に学ばず後世に禍根を残す酷いデザインだが、どういうわけか内部構造は大変素晴らしい。特にファイル構造を一旦キーバリュー式データストアに保存するというのは是非参考にしたいアイデアなので調べてみました。 Git 内部データストアの基機能は、ファイル名を使わず中身だけを保存する事です。ファイル名が無くて後からどうやって保存した中身を取り出すかというと、保存時に SHA-1 という文字列が発行されるのでそれを鍵に取り出します。それでは試しにやってみます。まず準備として新しい Git レポジトリを作ります。 $ mkdir test $ cd test $ git init Initialized empty Git repository in /Users/takashi/tmp/test/.git/ blob 次に、適当な文字列を保存します。 $ echo '適当

    ファイルシステムとしての Git - 言語ゲーム
    hakobe932
    hakobe932 2011/01/06
  • ふつうの言語で Lazy list について考える。 - 言語ゲーム

    こないだ Prolog を実装する時には随分 Haskell の遅延評価にお世話になりました。そこで、この大変便利な機能を普通の言語で使うにはどうしたら良いだろうかと色々調べると、Scheme の http://srfi.schemers.org/srfi-41/srfi-41.html というのに詳しく書いてある事が分かりました。他の言語でも色々やってる人居るみたいだけど、標準ライブラリになってるのは Scheme しか見つかりませんでした。 早速手元に gauche があるので実験します。gauche のは SRFI-40 とあってちょっと違うみたいだけど気にしない方向で。 gosh> (use util.stream) #<undef> gosh> (stream 1 2 3) #<promise(stream) 0x695b40> gosh> (stream-car (stream

    ふつうの言語で Lazy list について考える。 - 言語ゲーム
  • 1