keithlisp/doc/stdlib_data.md

2.4 KiB

Data Structures

These functions operate on various data structures in Keithlisp.

cons

(cons car cdr)

cons allocates and returns a new cons with the given car and cdr.

car

(car cons)

car returns the car portion of cons, or nil if the argument is not a cons.

cdr

(cdr cons)

cdr returns the cdr portion of cons, or nil if the argument is not a cons.

rplaca

(rplaca cons value)

rplaca changes the car portion of cons to value. It returns the same cons it was given.

rplacd

(rplacd cons value)

rplacd changes the cdr portion of cons to value. It returns the same cons it was given.

list

(list &rest elements)

list allocates and returns a new list containing elements.

length

(length list)

length returns the length of list, or nil if it is not a valid list. If list is circular, length will go into an infinite loop.

nth

(nth index list)

nth returns the indexth element in list. index must be an int.

If index is negative, nth will add (length list) to it. This will fail if list is circular.

nthcdr

(nthcdr index list)

nthcdr returns the cdr of the indexth cons in list. index must be an int.

If index is negative, nthcdr will add (length list) to it. This will fail if list is circular.

append

(append &rest lists)

append constructs a new list containing all the elements of lists appended together. It makes a shallow copy of each of its arguments.

push

(push list item)

push pushes item onto list and returns the new head of list.

assoc

(assoc alist key)

assoc returns the first cons in alist whose car is eq to key, or nil if no matching cons was found.

rassoc

(rassoc alist value)

rassoc returns the first cons in alist whose cdr is eq to value, or nil if no matching cons was found.

alist-put

(alist-put alist key value)

alist-put creates a new cons mapping key to value, and attempts to update alist with it in-place. If alist already contains a cons whose car is eq to key, the cons is replaced in-place with the new one. Otherwise, alist-put pushes the new cons onto alist and returns the new head of alist, in the same manner as push.