doc: Add "Data Types and Pattern Matching" to the Coding Style.

* HACKING (Data Types and Pattern Matching): New section.
This commit is contained in:
Ludovic Courtès 2013-09-07 15:51:29 +02:00
parent a129e0d877
commit 2df74ac117

12
HACKING
View file

@ -108,6 +108,18 @@ However, it is OK for a “host-side” module to use a build-side module.
Modules that deal with the broader GNU system should be in the (gnu …) name Modules that deal with the broader GNU system should be in the (gnu …) name
space rather than (guix …). space rather than (guix …).
** Data Types and Pattern Matching
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 Guiles (ice-9 match) module, especially when matching
lists.
** Formatting Code ** Formatting Code
When writing Scheme code, we follow common wisdom among Scheme programmers. When writing Scheme code, we follow common wisdom among Scheme programmers.