Entries from 2008-08-01 to 1 month

R6RS の equal? の停止性について

mutable pair のテストを実行していたらネイティブのスタックオーバーフローに。 これはかの有名な循環構造における equal? の停止性問題じゃないですか。 こういうケースはR5RSでは停止しなくても別によいのですが、R6RSでは明確に停止すると決まってる。 (…

時間割更新

Writing Solid Code -> WEwLC 昼をどうするかに迷いが。

エラー周りの調整完了

これからは R6RS のエラー処理に統一。関連タスクが多すぎたのでマインドマップを描いて乗り切った。 スタックオーバーフローだけは今のところ with-exception-handler でも捕まえられない仕様。

moccur-grep でディレクトリ入力するの面倒

moccur-grep でディレクトリ入力するの面倒。ファイルパターンも面倒。 これで良いのではないだろうか。 (defun my-moccur-grep (search-reg) (interactive "sSearch Regexp: ") (let ((file-patterns '("\\.cpp$" "\\.h$" "^Makefile$" "\\.scm$" "\\.ss$")…

エラー処理を改善中 その2

単純だが SEGV したらその原因を突き止める。修正する。 SEGV ではなくもっと分かりやすく検知できなかったか?を熟考。対応の処理を入れる。 Regexp のエラーをいかに raise するか?に苦労。鬼車が絡むのでエラーを raise する場所が深くて都合が悪い。 と…

1. Changing Software - WORKING EFFECTIVELY WITH LEGACY CODE (WEwLC)

Working Effectively With Legacy Code の 1章 Changing Software。 導入部分。この次に来るものが楽しみ。 マインドマップから再構成したまとめ ソフトウェアを変更する デザインを改善するリファクタリング ふるまいを変更しない メンテナンス性を上げる …

エラー処理を改善中

psyntax がロードされるまでは R6RS の種々の機能が使えない。その場合の assertion-violation や raise の挙動を決めて実装する。 R6RS ではないときは who, message, irritants を format で文字列にして raise を呼び出すことにする。ユーザーが見るエラ…

ドラゴン2

とりあえず 1-10巻をebookoff で購入。早く届け。

0.始めました - WORKING EFFECTIVELY WITH LEGACY CODE (WEwLC)

Working Effectively With Legacy Code 始めました。omo さんと mumurik さんの両者が読むべきだとおっしゃるのであれば間違いない。 Introduction と Chapter 1を読んだ。いくつか決めないといけないことがある。 読書予定時間の1時間を過ぎた場合に続行す…

The Beatles の子供たち

Julian, Sean はもちろん知っている。曲も聴く。George の息子は初めて見たが父親にそっくりすぎる。 Paul の息子も似てる。親子だなあ。声も聞いてみたい。 そういや Sean は僕と同じ名前なのだよね。

夏休み

夏休み。基本的には平日も休みも同じように過ごしたいと思っている。(旅行のための長期の休みを除く) 休みと平日の継ぎ目が来るたびに一喜一憂する。そんなことでペースを乱したくない。

ドラゴン

ドラゴン桜全巻を古本で一番安くゲットするにはどうすればよいだろうか。ヤフオクか?送料を含めると割高感も。地元の古本屋でまめにチェックするのが良いのかな。

新しい revision - SRFI に getenv を提案しようその15

Alexey Radul 氏の助けを借りて仕様書の新しい版を submit した。 Issues の追加がメイン。ふー。

R6RS test suite の Hash table テスト全部通った!

やっと R6RS test suite の Hash table のテスト全部通った。これはうれしい。 % ../mosh -b tests/r6rs/run/hashtables.sps Running tests for (rnrs hashtables) 249 tests passed これが久々にくじけそうなくらい、作業のスタックが深くて大変だった。 例…

apply の引数の仕組み

apply の引数がなぜあのような仕様なのか分かった。 (define (assertion-violation who message . irritants) (apply $assertion-violation who message irritants)) こういうことか。

復習

円高・円安 マインドマップの作り方と効果

with-exception-handler の仕様を正しく理解しよう その7

make-parameter / parameterize 。 parameter を使用する利点は、フィルタをはさめること。また parameterize から利用することで dynamic environment をユーザーが実現できること。 という理解で合っているかな。 SRFI-39 の実装例をほぼそのままに make-p…

携帯復旧

雨ぬれ水没から数週間(液晶に何も表示されないが通話は出来るといういやな状態。)。やっと代替機をゲットして携帯復旧。 USIMカードを入れ替えるのは初めてだ。電話帳を移行できないかショップに聞きに行こう。

with-exception-handler の仕様を正しく理解しよう その6

with-exception-handler よりも先に dynamic-wind を実装することにした。理由は2つ。 dynamic-wind の仕様を正しく理解できたので熱いうちに実装したい with-exception-handler の実装に dynamic-wind がつかえる 実装例をほぼそのままに実装した。call/cc …

Schemeを核に産業活性化を目指す東京都

元ネタ:【レポート】Rubyを核に産業活性化を目指す福岡県 - 124社が参加し、「F-Ruby」発足 (1) はじまりはRubyビジネス・コモンズの成功 | エンタープライズ | マイコミジャーナル

復習 WRITING SOLID CODE

予定通り翌日復習。満点。次は1週間後。

無印良品 ダブルリングノート B5

無印良品 ダブルリングノート B5 を3冊購入。 復習時にマインドマップを描くことが多くなったので減りが早くなった。マスターマインドマップはもう少し大きめの紙に描いている。

with-exception-handler の仕様を正しく理解しよう その5

dynamic-wind へ。 Together, dynamic-wind and call/cc manage a list of winders. A winder is a pair of in and out thunks established by a call to dynamic-wind.dynamic-wind と call/cc は協調して winders というリストを管理する。 winder は dyna…

with-exception-handler の仕様を正しく理解しよう その4

Gauche は大まかに srfi-18 の仕様に従っているらしい。 さて実装を追う。 ScmObj Scm_VMWithExceptionHandler(ScmObj handler, ScmObj thunk) { ScmObj current = theVM->exceptionHandler; ScmObj before = Scm_MakeSubr(install_xhandler, handler, 0, 0,…

勉強方法を勉強して分かった僕に足りなかった3つのこと

勉強方法を勉強して分かった僕に足りなかった3つのこと。 それは 時間割 マインドマップ 復習 の3つ。 1.時間割 勉強をコンスタントに長期的に続けるならば時間割は大変有用。 時間割を作り実践してみて分かったが「次に何をやるべきか」に迷う時間は振り返…

WRITING SOLID CODE - ライティングソリッドコード―バグのないプログラミングを目指して

ライティングソリッドコード―バグのないプログラミングを目指して。 この本は同僚のkaorun さんからお借りして読んだ。 Code Completeの興奮が冷めぬうちに某氏に本書も読むと良いよとすすめめられた。 さすがに某氏のすすめだけあって間違いはない。10年以…

じてんしゃ

そういえば毎日20kmくらい自転車で走っているのだから走行距離を記録する何かが欲しい。

with-exception-handler の仕様を正しく理解しよう その3

仕様の理解できない部分は実装例を勉強することで分かるかもしれないので先に進む。 Mosh に足りなかったもの call/cc と動的環境の関係が理解できていない call/cc で capture/restore される環境が足りていない 動的存続期間が意識されて実装されていない …

with-exception-handler の仕様を正しく理解しよう その2

(with-exception-handler handler thunk) Handler must be a procedure and should accept one argument. Thunk must be a procedure that accepts zero arguments. The with-exception-handler procedure returns the results of invoking thunk.handler は…

apply/invoke/perform/call

R6RS の文章中に出てくる apply/invoke/perform/call という単語たちの意味的な違いについて全く理解していないことに気づいた。 全部同じ?