История изменений
Исправление monk, (текущая версия) :
На с++
Ну для этого в лиспах тюплы не надо
;; это пишется один раз
(defun struct< (a b accessors)
(cond
((null accessors) nil)
((let ((accessor (car accessors))
(gen< #'<))
(when (consp accessor)
(setf gen< (cdr accessor)
accessor (car accessor)))
(funcall gen< (funcall accessor a) (funcall accessor b))
t)
(t (struct< a b (cdr accessors)))))
(defun make-struct< (accessors)
(lambda (a b) (struct< a b accessors)))
И вот полный аналог C++
(let ((v (make-array ...)))
(sort v (make-struct< (list #'struct-department_id (cons #'struct-department_name #"string<))))
...
(sort v (make-struct< (list (cons #'struct-department_name #"string<)))))
Исходная версия monk, :
На с++
Ну для этого в лиспах тюплы не надо
;; это пишется один раз
(defun struct< (a b accessors)
(cond
((null accessors) nil)
((let ((accessor (car accessors))
(gen< #'<))
(when (consp accessor)
(setf gen< (cdr accessor)
accessor (car accessor)))
(funcall gen< (funcall accessor a) (funcall acessor b))
t)
(t (struct< a b (cdr accessors)))))
(defun make-struct< (accessors)
(lambda (a b) (struct< a b accessors)))
И вот полный аналог C++
(let ((v (make-array ...)))
(sort v (make-struct< (list #'struct-department_id (cons #'struct-department_name #"string<))))
...
(sort v (make-struct< (list (cons #'struct-department_name #"string<)))))