Outdated egg!

This is an egg for CHICKEN 3, the unsupported old release. You're almost certainly looking for the CHICKEN 4 version of this egg, if it exists.

If it does not exist, there may be equivalent functionality provided by another egg; have a look at the egg index. Otherwise, please consider porting this egg to the current version of CHICKEN.

srfi-47

  1. Outdated egg!
  2. srfi-47
    1. Description
    2. Author
    3. Requirements
    4. Download
    5. Documentation
    6. Examples
    7. Changelog
    8. License

Description

An alternative arrays package conforming to SRFI-47.

Author

Aubrey Jaffer, ported to Chicken by felix winkelmann

Requirements

None

Download

srfi-47.egg

Documentation

The full specification can be found at the SRFI website. The array prototypes for complex numbers are not supported (ac64). The 64-bit signed and unsigned array prototypes au64 and as64) are provided but may not support the full range of numerical values on 32-bit architevtures.

Additionally, the following procedure is defined:

[procedure] (array-store ARRAY)

Returns the underlying storage object, which may be a vector or a SRFI-4 number vector.

Note: this array package is not compatible with the default array library (srfi-25) that is provided with the base system. Don't use these two libraries together in the same program.

Examples

(use srfi-47)

(define fred (make-array '#(#f) 8 8))
(define freds-diagonal
  (make-shared-array fred (lambda (i) (list i i)) 8))
(array-set! freds-diagonal 'foo 3)
(array-ref fred 3 3)
 => foo

(define freds-center
  (make-shared-array fred (lambda (i j) (list (+ 3 i) (+ 3 j)))
                     2 2))
(array-ref freds-center 0 0)
 => foo

Changelog

License

 Copyright (C) 2001, 2003 Aubrey Jaffer
 
 Permission to copy this software, to modify it, to redistribute it,
 to distribute modified versions, and to use it for any purpose is
 granted, subject to the following restrictions and understandings.
 
 1.  Any copy made of this software must include this copyright notice
 in full.
 
 2.  I have made no warranty or representation that the operation of
 this software will be error-free, and I am under no obligation to
 provide any services, by way of maintenance, update, or otherwise.
 
 3.  In conjunction with products arising from the use of this
 material, there shall be no use of my name in any advertising,
 promotional, or sales literature without prior written consent in
 each case.