;; Make and return an association list from a property list plist.
(define (propertylist-to-alist plist)
(let ((lgt (length plist)))
(cond ((null? plist) '())
((= 1 lgt) (error "propertylist-to-a-list called with list of odd length. A property list is always of even length"))
((>= lgt 2) (cons (cons (car plist) (cadr plist)) (propertylist-to-alist (cddr plist)))))))
;; Make and return a property list from an association list.
(define (alist-to-propertylist alist)
(cond ((null? alist) '())
(else (cons (car (car alist)) (cons (cdr (car alist)) (alist-to-propertylist (cdr alist)))))))