Chicken » Module (chicken plist)

## Module (chicken plist)

As in other Lisp dialects, CHICKEN supports "property lists" associated with symbols. Properties are accessible via a key that can be any kind of value but which will be compared using `eq?`.

### get

get SYMBOL PROPERTY #!optional DEFAULTprocedure

  Returns the value stored under the key PROPERTY in the property list of SYMBOL. If no such property is stored, returns DEFAULT. The DEFAULT is optional and defaults to `#f`.

### put!

put! SYMBOL PROPERTY VALUEprocedure
`(set! (get SYMBOL PROPERTY) VALUE)`procedure

  Stores VALUE under the key PROPERTY in the property list of SYMBOL replacing any previously stored value.

### remprop!

remprop! SYMBOL PROPERTYprocedure

  Deletes the first property matching the key PROPERTY in the property list of SYMBOL. Returns `#t` when a deletion performed, and `#f` otherwise.

### symbol-plist

symbol-plist SYMBOLprocedure
set! (symbol-plist SYMBOL) LSTprocedure

  Returns the property list of SYMBOL or sets it. The property list is a flat list of alternating properties and values.

  This list is not guaranteed to be a fresh copy, so avoid mutating it directly.

### get-properties

get-properties SYMBOL PROPERTIESprocedure

  Searches the property list of SYMBOL for the first property with a key in the list PROPERTIES. Returns 3 values: the matching property key, value, and the tail of property list after the matching property. When no match found all values are `#f`.

  This tail of the property list is not guaranteed to be a fresh copy, so avoid mutating it directly.

  PROPERTIES may also be an atom, in which case it is treated as a list of one element.

Previous: Module (chicken platform)

Next: Module (chicken port)