RosettaCodeData/Task/Letter-frequency/ACL2/letter-frequency.acl2

17 lines
476 B
Plaintext

(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)))