- Sequences
- Lists & cons cells
- Arrays
- Strings
- Vectors
- bool-vector
- char-table

### Functions List

The primary focus of this article is the list data structure which is also a core data structure for emacs lisp. The functions that I am going to describe are given below :-

listp, consp, null, car, cdr, caar, cdr, caddr, cdddr ... nthcdr

### Predicates on Lists

A Predicate is a Unary Function whose result represents the truth or falsehood of some condition. For instance the function (listp arg1) returns t if it's argument, arg1 is a list and it returns nil otherwise.

;;5.2 Predicates on Lists ;; consp, atom, listp, nlistp, null (listp '(1 2)) (listp '()) (listp 120) (consp '(q . r)) ;(consp arg1) returns true if arg1 is a cons element ; To know more about cons refer to 5.4 in elisp reference manual (consp '(a b c)) (consp nil) (consp 'a) (consp "hello") ;; Use null for lists and ;; the function ,'not', for truth values (null "Hello") ; Not recommended (null '(1 2 3)) ; This is good (null ()) ; And so is this

### Accessing Elements of Lists

In order to get the first element of the list we use (car

*list*). In order to get the list of elements besides the first we use (cdr

*list*). For more examples and short-cuts see the code given below,

;;5.3 Accessing elements of lists ;; car, cdr, caar, caddr, cdddr, ... (setq my-list '(1 2 3 4 5 6 7)) (car my-list) (cdr my-list) (car (cdr my-list)) (cadr my-list) (cdr (cdr my-list)) (cddr my-list) ; equivalent to (cdr (cdr my-list)) ; Refer 5.3 of elisp reference manual my-list (cdddr my-list) (nthcdr 3 my-list); same as (cdddr my-list)) ;; Note that all the functions discussed above are non-destructive my-list

The behaviour of car, cdr on the empty list is a bit peculiar in the sense that both car and cdr of an empty list returns the empty list. Please note that () is equivalent to nil is equivalent to '() is equivalent to 'nil.

;; Behaviour of car,cdr on the empty list () nil (car ()) (cdr ()) (cdr (cdr (cdr ()))) (cadadr ())

### Summary

The functions described in this article and other similar functions that can be looked up,

consp, atom, listp, nlistp, null car, cdr, caar, cdr, caddr, cdddr ... nthcdr, nth.

## 0 comments:

## Post a Comment