mirror of
https://github.com/justinethier/cyclone.git
synced 2025-05-23 20:15:05 +02:00
Added docs
This commit is contained in:
parent
dfb502abe3
commit
2f5baac5a5
1 changed files with 19 additions and 16 deletions
|
@ -1,21 +1,24 @@
|
|||
# SRFI 111 - Boxes
|
||||
|
||||
The `(srfi 111)` library ...
|
||||
The `(srfi 111)` library defines boxes, a container for an object of any Scheme type, including another box. Boxes are normally used as minimal mutable storage, and can inject a controlled amount of mutability into an otherwise immutable data structure (or one that is conventionally treated as immutable).
|
||||
|
||||
See the [SRFI document](http://srfi.schemers.org/srfi-111/srfi-111.html) for more information.
|
||||
|
||||
##- [`and-let*`](#and-let)
|
||||
##
|
||||
###and-let*
|
||||
## (and-let* (claws) body
|
||||
##
|
||||
## claws ::= '() | (cons claw claws)
|
||||
## claw ::= (variable expression) | (expression) |
|
||||
## bound-variable
|
||||
##
|
||||
##- The `claws` are evaluated in the strict left-to-right order
|
||||
##- For each `claw`, the `expression` part is evaluated first (or `bound-variable` is looked up)
|
||||
##- If the result is #f, `and-let*` immediately returns #f
|
||||
##- Otherwise, if the `claw` is of the form `(variable expression)` the `expression`'s value is bound to a freshly made `variable`
|
||||
##- The `variable` is available for the rest of the `claws` , and the `body`
|
||||
##- As usual, all `variable`s must be unique (like in `let*`)
|
||||
- [`box`] (#box)
|
||||
- [`box?`] (#box-1)
|
||||
- [`unbox`] (#unbox)
|
||||
- [`set-box!`](#set-box)
|
||||
|
||||
#box
|
||||
(box value)
|
||||
Constructor. Returns a newly allocated box initialized to value.
|
||||
#box?
|
||||
(box? object)
|
||||
Predicate. Returns #t if object is a box, and #f otherwise.
|
||||
#unbox
|
||||
(unbox box)
|
||||
Accessor. Returns the current value of box.
|
||||
#set-box!
|
||||
(set-box! box value)
|
||||
Mutator. Changes box to hold value.
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue