CL-USER> (defun most (fn lst)
(if (null lst)
(values nil nil)
(let* ((wins (car lst))
(max (funcall fn wins)))
(dolist (obj (cdr lst))
(let ((score (funcall fn obj)))
(when (> score max)
(setf wins obj
max score))))
(values wins max))))
MOST
CL-USER> (most #'length '((a b) (a b c) (a)))
(A B C)
3
언제나 직관적이고 아름다운 lisp 코드.
귀찮게 위 아래로 몇 번 훑을 필요도 없이
그냥 한 번 쭈욱 읽어내리기만 하면 된다.
따닥닥닥 괄호 치면서 묘한 타격감과 리듬감이 느껴진다.
(무엇보다 아범 키보드잖아♡)




덧글