Next: Formatting Code, Previous: Modules, Up: Coding Style [Contents][Index]
The tendency in classical Lisp is to use lists to represent everything,
and then to browse them “by hand” using car
, cdr
,
cadr
, and co. There are several problems with that style,
notably the fact that it is hard to read, error-prone, and a hindrance
to proper type error reports.
Guix code should define appropriate data types (for instance, using
define-record-type*
) rather than abuse lists. In addition, it
should use pattern matching, via Guile’s (ice-9 match)
module,
especially when matching lists (see Pattern Matching in GNU
Guile Reference Manual); pattern matching for records is better done
using match-record
from (guix records)
, which, unlike
match
, verifies field names at macro-expansion time.