On this page:
box
top
up

4.14BoxesπŸ”— i

+Boxes in The Racket Guide introduces boxes.

A box is like a single-element vector, normally used as minimal mutable storage.

A box can be mutable or immutable. When an immutable box is provided to a procedure like set-box! , the exn:fail:contract exception is raised. Box constants generated by the default reader (see Reading Strings) are immutable. Use immutable? to check whether a box is immutable.

A literal or printed box starts with #&. See Reading Boxes for information on read ing boxes and Printing Boxes for information on print ing boxes.

procedure

(box? v)boolean?

v:any/c
Returns #t if v is a box, #f otherwise.

See also immutable-box? and mutable-box? .

procedure

(box v)box?

v:any/c
Returns a new mutable box that contains v.

procedure

(box-immutable v)(and/c box? immutable? )

v:any/c
Returns a new immutable box that contains v.

procedure

(unbox box)any/c

box:box?
Returns the content of box.

For any v, (unbox (box v)) and (unbox (box-immutable v)) returns v.

procedure

(set-box! boxv)void?

v:any/c
Sets the content of box to v.

procedure

(unbox* box)any/c

procedure

(set-box*! boxv)void?

v:any/c
Like unbox and set-box! , but constrained to work on boxes that are not impersonators.

Added in version 6.90.0.15 of package base.

procedure

(box-cas! boxoldnew)boolean?

old:any/c
new:any/c
Atomically updates the contents of box to new, provided that box currently contains a value that is eq? to old, and returns #t in that case. If box does not contain old, then the result is #f.

If no other threads or futures attempt to access box, the operation is equivalent to

(and (eq? old(unbox box))(set-box! boxnew)#t)

except that box-cas! can spuriously fail on some platforms. That is, with low probability, the result can be #f with the value in box left unchanged, even if box contains old.

When Racket is compiled with support for futures, box-cas! is guaranteed to use a hardware compare and set operation. Uses of box-cas! can be performed safely in a future (i.e., allowing the future thunk to continue in parallel). See also Machine Memory Order.

top
up

AltStyle γ«γ‚ˆγ£γ¦ε€‰ζ›γ•γ‚ŒγŸγƒšγƒΌγ‚Έ (->γ‚ͺγƒͺγ‚ΈγƒŠγƒ«) /