Hi,

I don't see the point why Scheme provides the general `and' and `or' as
primitive macros (which does stand in our way when we wanna (apply and
things) instead of primitive procedures. For efficiency? I don't think there
would be much compared to the following definitions:

(define (gand . l)  ; 'g'eneral 'and'
  (define (iand l)
    (if (null? l)
        #t
        (let ((b (car l))
              (bs (cdr l)))
          (cond ((null? bs) b)
                (b (iand bs))
                (else #f)))))
  (iand l))

(define (gor . l)  ; 'g'eneral 'or'
  (define (ior l)
    (if (null? l)
        #f
        (let ((b (car l))
              (bs (cdr l)))
          (cond ((null? bs) b)
                (b b)
                (else (ior bs))))))
  (ior l))


If anyone can give a reasonable explanation, I may buy it. Otherwise, I will
go with my version in the future. And I suggest Guile or the standard
committee fix this annoying `bug' of Scheme.

Finally, Merry Christmas and Happy New Year to all us Guile users, and Guile
developers. We look forward the final 2.0 release of Guile in the coming new
year.



Best wishes,




-- 
DAY

Reply via email to