2002-01-25
λ. 買った本
- 『森博嗣のミステリィ工作室 - MORI Hiroshi's Mystery Workshop』
- 森博嗣[著]
- 『捻れ屋敷の利鈍 - The Riddle in Torsional Nest』
- 森博嗣[著]
- わーぉ。本当に袋とじになってるんだー
- ダ・ヴィンチ 2002年2月号
- -
- SAPIO 2月13日号
- 「失業時代なんて怖くない! 世界は不況とこう共生している」って記事を、笑ってやろうと思って
2003-01-25
λ. Howto translate combinators into CPL
こないだのアイディアをもう少し整理して、具体的に翻訳を定義してみた。memo-0125.pdf
このメモを書いてから気が付いたのだけど、CCCは型付きλ計算のモデルなので、翻訳できるのは当たり前といえば当たり前なのか。
……というあたりで更に気が付いたのだけど、この翻訳結果にβ変換等の簡約規則に対応する書き換え規則を定義してやって、書き換えの間で対応が保存されている事を示せば、CCCの上で型付きλ計算のモデルを具体的に作ったことになるよね?
CCCが型付きλ計算のモデルであることの証明の中身自体は全然知らなかったので、自力でここまで到達出来たのは嬉しい。
2005-01-25
λ. The Implementation of Functional Programming Languages
算譜の記 (2005-01-17)より。長らく絶版になっていた The Implementation of Functional Programming Languages (Prentice-Hall International Series in Computer Science)(Simon L. Peyton Jones) が、Web で公開されたそうだ。Implementing Functional Languages: a tutorial もあわせて読むと良いかも。
λ. 入門者に優しい銃器の話
chiko にっき (2004-01-21) より。私は銃器については全然知らないのだけど、洗練されたメカニズムとデザインを見るのは楽しいっすね。
λ. プロジェクト評価論
テスト。出来は微妙。
2009-01-25
λ. Google Notebook から Evernote へ乗り換えた
「GoogleがDodgeball, Jaiku, Videoなどなどを切り捨て」と「Official Google Notebook Blog: Stopping development on Google Notebook」で Google Notebook の開発が中止されることを知り、ここ数日はどうしたものかと困っていたのだけど、EvernoteにGoogle Notebook からのインポート機能が用意されたので早速乗り換えた。
移行作業では、Chrome で Google Notebook からの Atom でのエキスポートを行ったら、何故か iso-8859-1 のファイルになってしまい、その範囲外の文字がすべて「?」に化けてしまった。仕方ないので、Firefoxで試したところ、ちゃんと utf-8 のファイルとしてエキスポートすることが出来た。 また、Evernoteへのインポートは特に問題なく行うことが出来た。 (追記: ただ、メモの日付の情報はインポートした日付になってしまった)
Evernoteは昔ちょっと試したときには癖がありそうな気がしてたけど、今回まともに使い出してみて、これも悪くないという気がしてきた。
ところで、これまで Evernote でなく Google Notebook を使っていた一番の理由は、Google の方が事業継続の点で安心できそうという理由だったので、今回 Google Notebook の方が先に開発を停止してしまったのはなんだかちょっと皮肉な感じ。
2010-01-25
λ. “Runtime support for multicore Haskell” by Simon Marlow, Simon P. Jones, Satnam Singh
In ICFP '09: Proceedings of the 14th ACM SIGPLAN international conference on Functional programming (2009), pp. 65-78.
を読んだ。 Parallel Haskell に着目してGHCのランタイムのデザインを見直したという話。 Haskell忘年会のときのmaoeさんの発表で面白そうだったので読んでみた。 色々な改善点があるのだけど、GC周りの話とかは色々面白かった。
通常の並列のコピーGC(copying GC)では、重複してコピーしないためにHEC(Haskell Execution Context, ≒CPU)間で同期を行う。 だけど、実際に重複してコピーされるのはまれだし、Haskellの場合そもそも大多数のイミュータブルなオブジェクトは重複してコピーされても別に問題ないので、ミュータブルなオブジェクトのコピー時にしか同期をとらないようにしたというのは、「おおぉ」と思った。
それから、並列GCのHEC間のロードバランシングを無効にしたほうが速いという話も驚いた。これはその方が局所性が高くなるから。他にもかなり局所性は意識していて、ナイーブにロードバランシングしてるだけじゃだめなんだなぁ、と思った。
Strategiesの話はよく知らなかったので勉強になった。 spark pool のGCとStrategiesの話は悩ましそうだ。
他の、CPU間のsparkのロードバランシングに bounded workstealing queue を使うようにしたとか、spark毎にHaskellスレッドを生成するのではなくバッチ処理するようにしたとかは、地道に改善しているなという感じ。