Size: a a a

2020 August 15

χλ

χоρоший ☽☽☽ λисuчко... in Lisp Forever
Hirrolot
И что за синтаксис @body?
Вклейка
источник

χλ

χоρоший ☽☽☽ λисuчко... in Lisp Forever
Hirrolot
И что за синтаксис @body?
`(... ,@expr) == (append '(...) expr)
источник

PG

Pig Greenest in Lisp Forever
флексит
источник

PG

Pig Greenest in Lisp Forever
(defmacro when (condition &rest body)
 (list 'if condition (cons 'progn body)))
источник

H

Hirrolot in Lisp Forever
А почему просто не сделать

(defmacro when (condition &rest body)
 (if condition (progn body)))

?
источник

PG

Pig Greenest in Lisp Forever
потому что это не схема XD
источник

PG

Pig Greenest in Lisp Forever
смотри, типы у них такие:
when :: Bool -> List t -> t
whenM :: Ast -> List Ast -> Ast
где whenM это макрос
источник

PG

Pig Greenest in Lisp Forever
блин, сложно объясняю, ты лучше вопросы задавай)
источник

H

Hirrolot in Lisp Forever
Ладно, прочитаю следующую главу про написание собственных макросов, может пойму)
источник

PG

Pig Greenest in Lisp Forever
Понимаешь, макросы работают на этапе компиляции
источник

a

anton in Lisp Forever
советую сделать macroexpand (или как там в вашем лиспе) всех вариантов и посмотреть во что каждый вариант превращается
источник

a

akater in Lisp Forever
Hirrolot
И что за синтаксис @body?
Синтаксиса @body нет, есть ,@body.


(let ((list (list 'c 'd))) `(a b ,@list e))
;; => (a b c d e)
источник

a

anton in Lisp Forever
akater
Синтаксиса @body нет, есть ,@body.


(let ((list (list 'c 'd))) `(a b ,@list e))
;; => (a b c d e)
а можно глупый вопрос, зачем у вас две точки с запятой перед комментарием?
источник

a

akater in Lisp Forever
Backquoting нужен потому что разцитирование (т.е. запятая или запятая-@) не сработает внутри обычного цитирования.
источник

a

akater in Lisp Forever
anton
а можно глупый вопрос, зачем у вас две точки с запятой перед комментарием?
Потому что это синтаксис комментария.
источник

a

anton in Lisp Forever
akater
Потому что это синтаксис комментария.
а это какой диалект? в clisp одной достаточно
источник

a

akater in Lisp Forever
anton
а это какой диалект? в clisp одной достаточно
1. Любое количество точек с запятыми это комментарий.  Одну ставят в конце строки с кодом, две или три (ну или больше) — в начале строки без кода.
2. clisp это имплементация, язык называется Common Lisp
источник

a

anton in Lisp Forever
akater
1. Любое количество точек с запятыми это комментарий.  Одну ставят в конце строки с кодом, две или три (ну или больше) — в начале строки без кода.
2. clisp это имплементация, язык называется Common Lisp
А, то есть это какое-то соглашение. Это есть в каких-то guidelines?
источник

SA

Sokolov Andrew in Lisp Forever
google style guide
источник

a

anton in Lisp Forever
Sokolov Andrew
google style guide
нашел, спасибо!
источник