• person rss_feed

    Michał "phoe" Herda’s feed

    Blog

    • chevron_right

      When CL:TENTH is not enough

      Michał "phoe" Herda · Thursday, 20 August, 2020 - 14:21 edit

    #Lisp #CommonLisp

    ;;;; License: don't use this at home
    
    (defmacro defnth (n)
      (let ((var (gensym "LIST"))
            (name (intern (substitute #\- #\Space (format nil "~:@(~:R~)" n)))))
        `(defun ,name (,var) (nth (1- ,n) ,var))))
    
    CL-USER> (defnth 1234)
    ONE-THOUSAND-TWO-HUNDRED-THIRTY-FOURTH
    
    CL-USER> (one-thousand-two-hundred-thirty-fourth (loop for i from 1 below 2000 collect i))
    1234