kawa 1.6.99 and set!ing parameters

Sven Hartrumpf Sven.Hartrumpf@FernUni-Hagen.de
Fri Dec 20 10:36:00 GMT 2002


The following code is somewhat ugly but works on all Schemes I know -
except kawa
(I use this set!-if pattern in line 2 for setting defaults of optional
parameters quite frequently so I would prefer not to change this pattern to
a let-if pattern with a fresh variable pad2):

(define write-integer-pad (lambda (n size . pad)
  (set! pad (if (pair? pad) (car pad) #\space))  ; <----------
  (let ((n-size 0))
    (cond ((<= n 0)
           (set! n-size 1)))
    (do ((n2 n (quotient n2 10)))
      ((= n2 0))
      (set! n-size (+ n-size 1)))
    (let ((diff-size (- size n-size)))
      (cond ((> diff-size 0)
             (do-n (lambda ()
                     (write-char pad))
                   diff-size)))
      (write n)))))

> kawa
#|kawa:1|# (load "kawabug.scm")
kawabug.scm:2:4: warning - cannot convert literal (of type gnu.text.Char) to gnu.lists.LList

Is kawa's behavior supported by the R5RS standard?

Ciao
Sven



More information about the Kawa mailing list