Added docs

This commit is contained in:
Justin Ethier 2016-09-30 17:09:00 -04:00
parent dfb502abe3
commit 2f5baac5a5

View file

@ -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.