Keyword Type

Keywords are very similar to symbols but serve a slightly different purpose. Like symbols they are a word but must begin with a :, U+003A (COLON).

They exist as semantic flags – rather than as symbols’ programmatic flags – to be used to identify optional arguments to functions. Think of a function with many possible optional arguments and if you only want to set the foo optional parameter you might invoke:

func formals :foo arg

There is a constraint on the possible keywords in that in order to avoid clashing with the definition operators, := etc., then the characters of a keyword after the : must not start with a punctuation character, (through ispunct(3)).

So :foo=bar is fine but :=bar is not – and will be interpreted as a symbol.

Keyword Predicates

function keyword? o

test if o is an keyword

Param o:

object to test

Return:

#t if o is an keyword, #f otherwise

Keyword Constructors

function make-keyword s

create a keyword from s

Param s:

keyword

Type s:

symbol or string

Return:

keyword

Rtype:

keyword

Keyword Functions

function keywords

return a list of all keywords

Return:

list

Keyword Tables

Keyword tables are hash tables indexed by keywords.

They are used primarily as property tables.

function make-keyword-table [size]

used for constructing property tables

Param size:

size of underlying hash table

Type size:

integer, optional

Return:

keyword table

function keyword-ref kt kw [default]

return the value indexed by keyword kw in keyword table kt

Param kt:

keyword table

Type kt:

keyword table

Param kw:

keyword index

Type kw:

keyword

Param default:

a default value to return if kw not found

Type default:

value, optional

Return:

value

Raises ^rt-keyword-error:

if key is not found and no default is supplied

function keyword-set! kt kw v

set the index of kw in keyword table kt to v

Param kt:

keyword table

Type kt:

keyword table

Param kw:

keyword index

Type kw:

keyword

Param v:

value

Type v:

a value

Return:

#<unspec>

Last built at 2024-05-17T06:10:58Z+0000 from 62cca4c (dev) for Idio 0.3.b.6