Size: a a a

2020 October 06

SA

Sokolov Andrew in Lisp Forever
для остального людям придется руками конечно да
источник

SA

Sokolov Andrew in Lisp Forever
ну как
источник

SA

Sokolov Andrew in Lisp Forever
веклеймами еще
источник

a

akater in Lisp Forever
Aragaer
stuff вроде ж может содержать некоторые переменные, которые будут определены в том месте, где макрос вызывается
Ну так (declaim (special ..)), и функция тоже будет работать.

Я люблю symbol-macrolet, но глобальный макрос без аргументов с расчетом на такие use cases — это по-моему совсем нехорошо.
источник

SA

Sokolov Andrew in Lisp Forever
+ сами функции из моего пакета тоже все типизированы
источник

AK

Andrew Kravchuk in Lisp Forever
akater
Там есть ссылка на весь код, а в коде есть

(defmacro page-footer ()
  `(htm
     (with-content-table
      (:tr (:td :colspan 2 " "))
      (:tr (:td :colspan 2 (:hr)))
      (:tr (:td :class "content-light content-small" (str #!"all_copyright")) (:td :class "content-light content-small" (:div :align "right" (str (format-timestring nil (now) :format +asctime-format+)))))
      (:tr (:td :colspan 2 " ")))))


Кто-нибудь понимает, почему это макро, а не функция?  Я б хотел эту статью показать кое-кому, но я должен предупредить, если там пишут макрос там где он не нужен.
По той же причине, по которой format чаще всего реализован как compiler macro. Шоб быстрее 😅
источник

AK

Andrew Kravchuk in Lisp Forever
А, пажжи, речь про сам макрос
источник

AK

Andrew Kravchuk in Lisp Forever
Чёрт, сорян, не проснулся
источник

AK

Andrew Kravchuk in Lisp Forever
Тогда хз
источник

AK

Andrew Kravchuk in Lisp Forever
Я думал, вопрос про cl-who
источник

VL

Valeriy L in Lisp Forever
Andrew Kravchuk
По той же причине, по которой format чаще всего реализован как compiler macro. Шоб быстрее 😅
Ого, т.е. он генерит код который принтит? А в каких реализациях такое есть?
источник

VL

Valeriy L in Lisp Forever
Мне вот всегда было интересно, насколько сложно делать такие штуки. Особенно интересно про регекспы. Насколько сложно в компайлтайме сгенерить такой конечный автомат
источник

VL

Valeriy L in Lisp Forever
И я так и не понял, делает ли cl-ppcre что-то подобное. Всё что я увидел это представление регекспа в виде секспа
источник

VL

Valeriy L in Lisp Forever
Надо попробовать написать такое)
источник

AK

Andrew Kravchuk in Lisp Forever
Valeriy L
Ого, т.е. он генерит код который принтит? А в каких реализациях такое есть?
Как минимум в sbcl видел. Если сделать M-. на format, тебе sly/slime предложит несколько вариантов - defun и несколько compiler-macro
источник

AK

Andrew Kravchuk in Lisp Forever
Valeriy L
И я так и не понял, делает ли cl-ppcre что-то подобное. Всё что я увидел это представление регекспа в виде секспа
Вроде cl-ppcre как раз делает что-то подобное, если текст регекспа известен на этапе компиляции (а это обычно так), как раз тоже через compiler macro
источник

VL

Valeriy L in Lisp Forever
Andrew Kravchuk
Как минимум в sbcl видел. Если сделать M-. на format, тебе sly/slime предложит несколько вариантов - defun и несколько compiler-macro
Круто, а его можно раскрыть через macroexpand?
источник

AK

Andrew Kravchuk in Lisp Forever
Вроде бы нет
источник

VL

Valeriy L in Lisp Forever
Пичаль
источник

AK

Andrew Kravchuk in Lisp Forever
Я по compiler macro не спец, @Commander_Trashdin больше шарит, может он подскажет)
источник