On 31-08-2022 09:01, Damien Mattei wrote:
> I always try to keep compatibility with RnRS and in fact except cond
> none of when, unless, cond, case, while, and do are in standart RnRS schem
'when', 'unless' and 'do' are actually RnRS, see (rnrs control).
oh your're right...i was sticked to R5RS ,time i was student...
'case' is also RnRS, see (rnrs base).
However, looking at (guile)while do, 'while' is indeed non-standard.
and i had rewritten last week a 'while ... do' like in C or Pascal:
in my Scheme+:
;; (define do '())
;; (while {i < 4}
;; do
;; (display i)
;; (newline)
;; {i <- {i + 1}})
;; 0
;; 1
;; 2
;; 3
;; $1 = #f
(define-syntax while
(syntax-rules (while do)
((_ pred do b1 ...)
(let loop () (when pred b1 ... (loop))))))
i will have to forget it! as i want to keep compatibility with standard Scheme also but i will rewrite all with (let () ...) instead of (begin ...) unless it can cause some incompatibilities, for now , i do not see problems as "who can do more can do less"......
Regards,
Damien