フィード:
投稿
コメント

2008年7月のアーカイブ

Ypsilon 0.9.5-update2をリリースしました。今回のアップデートでかなりのバグを取ることができたと思います。ご協力頂いた方々に感謝いたしております。最近アナウンスされたPLTのR6RS test suiteを動かしてみたところ、98.9%のカバー率になりました。
今回のリリースでは、とても見つけにくいコンカレントGCのバグを2つ消すことができたのが個人的には嬉しいです。これはWilliam D Clingerさんからメールで教えて頂いたR6RS Benchmarksの中のgcbenchというテストプログラムで発覚しました。御大に感謝です!:D
Ypsilon 0.9.5-update2は http://code.google.com/p/ypsilon/ からダウンロードすることができます。現在、MacOS X, Windows Vista, Linuxがサポートされています。
– Fujtia

投稿の続きを読む »

ちなみに一般的なピンボールの直径は2.699cm(1 1/16インチ)で重さは80gです
「思ったより小さい」と感じますか?それとも「大きい」と感じるでしょうか?

投稿の続きを読む »

以前シカゴのピンボールメーカーで教えてもらいました。プレイヤーからの質問で一番多いのが「ボールの直径と重さ」なんだそうです。確かに手のひらに乗せたことのある人は少ないですよね。

投稿の続きを読む »

Ypsilonのバグフィックス版をリリースしました。皆様のご協力のおかげで思ったより早く安定してきたと思います。コメントやバグレポートをお送り頂いた方々に感謝いたしております m(_ _)m
こういったソフトウエアのデバッグは一人では難しいものです。なぜならテスト用のプログラムが偏ったものになるからです。これはプログラマーがそれぞれ自分のコーディングスタイルを持っていることに起因します。「こんな使い方あったのか〜」という発見があり、そしてその中にバグが潜んでいることもしばしばです
最近そんな例に関連する投稿がcomp.lang.schemeにありました。
(define (((f x) y) z) (+ x y z))
というプログラムはR6RS Schemeではエラーにしなければなりません。でも、これが使えると便利そうなんだけど・・・ そういう場合R6RSでは下記のようにポータブルに実現することができます。

(library (define+)
 (export (rename (define+ define)))
 (import (rnrs))
 (define-syntax define+
  (syntax-rules ()
   ((_ (f . args) . body)
    (define+ f (lambda args . body)))
   ((_ var val)
    (define var val)))))
(import (define+))
(define (((f x) y) z) (+ x y z))
(define g ((f 1) 2))
(g 3) ;=> 6

でも、私は自分のプログラムではこういう書き方はしません・・・で、この使い方にはバグが潜んでいたわけですね(汗
もしも私が一人でデバッグしていたら、これって何時まで潜んでいたことやら

投稿の続きを読む »