プログラミングGauche 17.5.3 メソッド適用のカスタマイズ 練習問題
<logger-generic> をカスタマイズして、ログ出力の on/off を切り替える。 (use srfi-1) (use gauche.time) (define-class <logger-generic> (<generic>) ((printlog :init-value #f) ; スロットにログ出力フラグを追加 ())) (define-me…続きを読む
<logger-generic> をカスタマイズして、ログ出力の on/off を切り替える。 (use srfi-1) (use gauche.time) (define-class <logger-generic> (<generic>) ((printlog :init-value #f) ; スロットにログ出力フラグを追加 ())) (define-me…続きを読む
Safari4 にアップグレードしてから "flash を設置しているサイト" の読み込みが完了せず、表示されないようになってしまった。 flash の無いサイトは問題なく表示されていて、flash のあるサイトの読み込み時でも Safari がフリーズしてしまっているわけではない。 いろいろ検索してみると、どうやら SafariStand が原因だったらしい・・・ Safar…続きを読む
問題4.32 3章のストリームと4.2.3節の遅延評価リストとの間の違いは、リストの car の部分を遅延評価するかどうかである。 以下のように4.2.3節の遅延評価リストでは、未定義の x, y を使ったリストを定義できる。 ;;; L-Eval input: (define st (cons x y)) ;;; L-Eval value: ok ;;; L-Eval input: st ;;;…続きを読む
問題4.31 この問題は、参考サイト(SICP 4.2.2 Ex. 4.27 Ex. 4.28 Ex. 4.29 Ex. 4.30 Ex. 4.31 – nakayama-blog)の写経で済ませる。 make-procedure にリーダーマクロを付けて modifier の状態を可視化する。 (define (make-procedure parameters body env) …続きを読む
問題4.30 並びの中の式の内、最後の式以外(途中の式)の引数は評価されず遅延される。 途中の式でも基本手続きの場合はその引数は評価される。 並び(元々のバージョン) (define (eval-sequence exps env) (cond ((last-exp? exps) (eval (first-exp exps) env)) (else (eval (first-exp exps) e…続きを読む
最初、tr で変換すると文字化けしてしまった。tr で日本語を使うには require "jcode" する必要があるらしい。 #!/usr/bin/env ruby -w # -*- coding: utf-8 -*- $KCODE = "u" require "jcode" # String クラスの tr メソッドで日本語を使用可能…続きを読む
Mac OSX 版の Firefox 3.5 のタブの色が変化に乏しく、現在のページのタブが分かりにくいので userChrome.css に以下のコードを記述して見やすくした。 tab { color: #333333 !important; } tab[selected="true"] { color: #000000 !important; background-colo…続きを読む
Firefox 3.5 RC1 が公開されたので、そろそろ新バージョンへの移行の準備を始める。 個人的に利用頻度の高い拡張機能の対応バージョンを調べた。 拡張のバージョンと、その対応 Firefox バージョンは2009年6月18日現在のもの。(2009年6月28日更新、Live HTTP Headers)(2009年7月12日更新、YSlow) ほとんどの拡張機能が 3.5 にまで対応していた。…続きを読む
問題4.29 メモ化しない force-it (define (force-it obj) (if (thunk? obj) (actual-value (thunk-exp obj) (thunk-env obj)) obj)) メモ化した force-it (define (force-it obj) (cond ((thunk? obj) (let ((result (actual-valu…続きを読む
text.tr モジュールを使って Gauche で "ひらがな<->カタカナ" の変換をする。 (use text.tr) (define (kana-translator from to) (define (translator str) (with-string-io str (lambda () (let ((ptr (tr from to))) (let …続きを読む