Kon Lovett | 1 Oct 2005 05:11

Problem w/ srfi-47.scm

Hi,

srfi-47 was written w/ the assumption that a instance of a variable 'x' 
in the body of a form '(define x ...)' references the "earlier" 
binding. So w/ CHICKEN 2.201 (array? (make-arrary '#() 2 2)) will loop 
forever. Below is a patch for srfi-47.scm to correct this and another 
problem.

Best Wishes,
Kon

---
54a55,56
 > (define array:predicate? array?)
 >
57,63c59,67
< (define array?
<   (lambda (obj)
<     (or (string? obj)
<       (vector? obj)
<       (and (##sys#generic-structure? obj)
<            (memq (##sys#slot obj 0) '(u8vector u16vector s8vector 
s16vector u32vector s32vector f32vector f64vector)) )
<       (array? obj))))
---
 > (define (array? obj)
 >       ; can't be immediate data, ##sys#generic-structure? will blow
 >       (and (not (or (fixnum? obj) (char? obj) (boolean? obj)))
 >               (or (string? obj)
 >                       (vector? obj)
 >                       (and (##sys#generic-structure? obj)
 >                                (memq (##sys#slot obj 0)
 >                                        '(u8vector u16vector s8vector 
s16vector u32vector s32vector f32vector f64vector)))
 >                       (array:predicate? obj))))

Gmane