Previous: System, Up: Universal SLIB Procedures [Contents][Index]
These procedures are provided by all implementations.
identity returns its argument.
Example:
(identity 3) ⇒ 3 (identity '(foo bar)) ⇒ (foo bar) (map identity lst) ≡ (copy-list lst)
An exchanger is a procedure of one argument regulating mutually exclusive access to a resource. When a exchanger is called, its current content is returned, while being replaced by its argument in an atomic operation.
Returns a new exchanger with the argument obj as its initial content.
(define queue (make-exchanger (list a)))
A queue implemented as an exchanger holding a list can be protected from reentrant execution thus:
(define (pop queue) (let ((lst #f)) (dynamic-wind (lambda () (set! lst (queue #f))) (lambda () (and lst (not (null? lst)) (let ((ret (car lst))) (set! lst (cdr lst)) ret))) (lambda () (and lst (queue lst)))))) (pop queue) ⇒ a (pop queue) ⇒ #f
The following procedures were present in Scheme until R4RS (see Language changes in Revised(4) Scheme). They are provided by all SLIB implementations.
Defined as #t
.
Defined as #f
.
Returns the last pair in the list l. Example:
(last-pair (cons 1 2)) ⇒ (1 . 2) (last-pair '(1 2)) ⇒ (2) ≡ (cons 2 '())
Previous: System, Up: Universal SLIB Procedures [Contents][Index]