Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Practical Patterns: Working With Records Idiomatically

The Builder Pattern

(defun make-person-from-data (data)
  (make-person 
    name (proplists:get_value 'name data "Unknown")
    age (proplists:get_value 'age data 0)
    phone (proplists:get_value 'phone data "")))

The Updater Pattern

(defun update-if-valid (person new-age)
  (if (>= new-age 0)
    (set-person-age person new-age)
    person))

The Transformer Pattern

(defun person-to-proplist
  (((match-person name n age a phone p))
   `(#(name ,n) #(age ,a) #(phone ,p))))