Size: a a a

Clojure — русскоговорящее сообщество

2020 April 10

VL

Vladimir Legkunets in Clojure — русскоговорящее сообщество
похоже на лисп :)
источник

MK

Mikhail Kuzmin in Clojure — русскоговорящее сообщество
Vladimir Legkunets
похоже на лисп :)
Common Lisp использует S-выражения для обозначения как кода, так и данных.
источник

VL

Vladimir Legkunets in Clojure — русскоговорящее сообщество
да-да, я просто не сразу увидел коммент :)
источник

VL

Vladimir Legkunets in Clojure — русскоговорящее сообщество
кликнул по ссылке
источник

E

ETL in Clojure — русскоговорящее сообщество
Раз уж второй день идёт пьянка по макросам, можно принять участие )))
источник

E

ETL in Clojure — русскоговорящее сообщество
Есть макрос, который я написал и который работает

(defmacro megamacro [code]
  (list 'let '[conn (mg/connect)
          db   (mg/get-db conn "monger-test")
          coll "documents"] code))
источник

E

ETL in Clojure — русскоговорящее сообщество
Он соответственно используется, чтобы не использовать постоянно "императивный" шаблон для подключения к МонгоДБ, а заменить его вызовом макроса "megamacro". Вопрос как переписать сей макрос без использования list. А точнее, как переписать его, используя  ~ @ и прочие приблуды.
источник

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
ETL
Есть макрос, который я написал и который работает

(defmacro megamacro [code]
  (list 'let '[conn (mg/connect)
          db   (mg/get-db conn "monger-test")
          coll "documents"] code))
(defmacro megamacro [code]
 `(let [~'conn (mg/connect)
        ~'db   (mg/get-db conn "monger-test")
        ~'coll "documents"]
    ~code))
источник

E

ETL in Clojure — русскоговорящее сообщество
А можно объяснить конструкцию ~' ?
источник

E

ETL in Clojure — русскоговорящее сообщество
~ - просьба вычислить значение символа, ' - соответственно подавление вычисления
источник

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
Sergey Trofimov
(defmacro megamacro [code]
 `(let [~'conn (mg/connect)
        ~'db   (mg/get-db conn "monger-test")
        ~'coll "documents"]
    ~code))
поправочка
(defmacro megamacro1 [code]
 `(let [~'conn (mg/connect)
        ~'db   (mg/get-db ~'conn "monger-test")
        ~'coll "documents"]
    ~code))
источник

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
ETL
А можно объяснить конструкцию ~' ?
ну, подставить символ conn как есть
я методом тыка писал 😊
источник

E

ETL in Clojure — русскоговорящее сообщество
☺️☺️☺️ аригато, сенсей Сергей )))
источник

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
ETL
☺️☺️☺️ аригато, сенсей Сергей )))
😜
источник

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
Мне тоже было интересно
источник

DL

Dmytro Lispyvnyi '(🌲 🍺) in Clojure — русскоговорящее сообщество
ETL
А можно объяснить конструкцию ~' ?
это называется unquote
источник

DL

Dmytro Lispyvnyi '(🌲 🍺) in Clojure — русскоговорящее сообщество
~@ splicing unquote
источник

DL

Dmytro Lispyvnyi '(🌲 🍺) in Clojure — русскоговорящее сообщество
` - quasiquote
источник

DL

Dmytro Lispyvnyi '(🌲 🍺) in Clojure — русскоговорящее сообщество
' - quote
источник

DL

Dmytro Lispyvnyi '(🌲 🍺) in Clojure — русскоговорящее сообщество
в обычных лиспах вместо @ - ,
источник