I have released a new version of Ypsilon. Some bugs have been fixed. Ypsilon has got stable much earlier than expected. It is because of the lots of help from people who kindly sent me comments and bug reports…Thank you so much!
Debugging this kind of software is very difficult if it’s done alone because the test program tends to be biased. The biase depends on the programmer’s coding style in which bugs are often lurked in.
I found an post on such an example in comp.lang.scheme recently.
(define (((f x) y) z) (+ x y z))
Such a program should be considered as an error in R6RS Scheme. However, if you think it might be convenient if you can use it, you can implement it in a portable way in R6RS as follows:
(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
Well, I don’t write codes in this way in my program. Then, bugs were lurked in this usage.
If I couldn’t get any help at debugging, how long this bug would lurk…:(