(defun increment-alist (tbl key) (cond ((endp tbl) (list (cons key 1))) ((eql (car (first tbl)) key) (cons (cons key (1+ (cdr (first tbl)))) (rest tbl))) (t (cons (first tbl) (increment-alist (rest tbl) key))))) (defun freq-table (xs) (if (endp xs) nil (increment-alist (freq-table (rest xs)) (first xs)))) (defun letter-freq (str) (freq-table (coerce str 'list)))