2008-05-01から1ヶ月間の記事一覧

カリー化関数 (curried function) について

SML という言語のテキストを読んでいて、これまで自分がカリー化という言葉をよく理解せずに使っていたことに気付きました。どうやら部分適用の概念と混同していたようです。一般に、ML や Haskell のような関数型言語においては、カリー化とは n 要素タプル…

マルチスレッドと副作用

(排他制御の件での初歩的なミスに頭を悩ませている最中ではありますが、また別な話題です) 並列処理プログラミングにおける副作用というのは様々な厄介な問題の温床ですが、MzScheme の channel を使うと問題を解決できる場合があります。スレッド下の処理を…

マルチスレッドと排他制御

threaded-map という関数を用いて、高階なマルチスレッド・プログラミングをしています。 (threaded-map f l) f は1引数関数で、リスト l の各要素に適用されるんですが、要素ごとに独立したスレッド下で処理される点が普通の map と異なります。しかも、各…

クロージャの活用 - 設定ファイル関数、動的オブジェクト・ローダー

クロージャ (内部状態を保持する関数。SICP 2 章では残念な誤用とされております) を用いて、データに対する手続きを抽象化する例をいくつかお見せします。 オブジェクトの動的ローダー 重いオブジェクトを、必要に応じて読み込んだり開放したりするための関…

データベース検索エンジン

youtube データベース検索の話の続きです。当初は (and (and "wa" "bi") (not "wasabi")) のように、タイトルもしくはコメントを対象として検索式を組む仕様だったんですが、より自在な検索ができるよう、DB レコードのフィールド名を明示的に指定して検索す…