Size: a a a

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

2020 April 09

VL

Vlad Lisovsky in Clojure — русскоговорящее сообщество
источник

VL

Vlad Lisovsky in Clojure — русскоговорящее сообщество
Иногда я думаю, что JS это такой детский сад
источник

ИФ

Иван Федоров in Clojure — русскоговорящее сообщество
Vlad Lisovsky
Иногда я думаю, что JS это такой детский сад
главное что не за наш счёт
источник
2020 April 10

ST

Sergey Tkachenko in Clojure — русскоговорящее сообщество
Всем привет. Такой вопрос - если я запускаю clj repl и делаю eval
(eval ‘(fn [args] (+ 1 2))) это работает и создаётся анонимная функция, но когда я использую точно такую же штуку в макросе я получаю ошибку

`Error in phase :compile-syntax-check
RuntimeException: Unable to resolve symbol: fn in this context`

Макрос выглядит примерно так
`(defmacro mymacro [form]
 (eval form)`
mymacro используется в cljs коде
(mymacro (fn [args] (+ 1 2)))
что я делаю не так?
источник

DL

Dmytro Lispyvnyi '(🌲 🍺) in Clojure — русскоговорящее сообщество
Sergey Tkachenko
Всем привет. Такой вопрос - если я запускаю clj repl и делаю eval
(eval ‘(fn [args] (+ 1 2))) это работает и создаётся анонимная функция, но когда я использую точно такую же штуку в макросе я получаю ошибку

`Error in phase :compile-syntax-check
RuntimeException: Unable to resolve symbol: fn in this context`

Макрос выглядит примерно так
`(defmacro mymacro [form]
 (eval form)`
mymacro используется в cljs коде
(mymacro (fn [args] (+ 1 2)))
что я делаю не так?
eval в макросе - это не только не нужно, но и неправильно
источник

ST

Sergey Tkachenko in Clojure — русскоговорящее сообщество
Dmytro Lispyvnyi '(🌲 🍺)
eval в макросе - это не только не нужно, но и неправильно
а это не легально?
источник

DL

Dmytro Lispyvnyi '(🌲 🍺) in Clojure — русскоговорящее сообщество
Sergey Tkachenko
а это не легально?
это очень плохая практика, ну т.е. вообще eval без необходимости лучше не использовать, а в макросах так совсем
источник

S

Special K in Clojure — русскоговорящее сообщество
Sergey Tkachenko
а это не легально?
FBI open up
источник

ST

Sergey Tkachenko in Clojure — русскоговорящее сообщество
с тем что плохая практика я соглашусь но не  понятно почему не работает
источник

ST

Sergey Tkachenko in Clojure — русскоговорящее сообщество
какие ограничения в компайл тайм не дают этого делать
источник

ST

Sergey Tkachenko in Clojure — русскоговорящее сообщество
получается fn это сам по себе макрос
источник

ST

Sergey Tkachenko in Clojure — русскоговорящее сообщество
и нельзя макрос заэвалить внутри макроса?
источник

DL

Dmytro Lispyvnyi '(🌲 🍺) in Clojure — русскоговорящее сообщество
так погоди, а где у тебя вылезает ошбка?
источник

DL

Dmytro Lispyvnyi '(🌲 🍺) in Clojure — русскоговорящее сообщество
ну и главный вопрос - что именно нужно сделать, что без eval в макросе никак?
источник

ST

Sergey Tkachenko in Clojure — русскоговорящее сообщество
Dmytro Lispyvnyi '(🌲 🍺)
так погоди, а где у тебя вылезает ошбка?
Error in phase :compile-syntax-check
    RuntimeException: Unable to resolve symbol: fn in this context
источник

ST

Sergey Tkachenko in Clojure — русскоговорящее сообщество
Dmytro Lispyvnyi '(🌲 🍺)
ну и главный вопрос - что именно нужно сделать, что без eval в макросе никак?
конечно можно но хочется понять всю эту магию
источник

DL

Dmytro Lispyvnyi '(🌲 🍺) in Clojure — русскоговорящее сообщество
Sergey Tkachenko
Error in phase :compile-syntax-check
    RuntimeException: Unable to resolve symbol: fn in this context
что ты запускаешь? ошибку я увидел
источник

ST

Sergey Tkachenko in Clojure — русскоговорящее сообщество
mymacro используется в cljs коде
(mymacro (fn [args] (+ 1 2)))
источник

DL

Dmytro Lispyvnyi '(🌲 🍺) in Clojure — русскоговорящее сообщество
((mymacro
(fn [args] (+ 1 2))) 1)
> 3
источник

DL

Dmytro Lispyvnyi '(🌲 🍺) in Clojure — русскоговорящее сообщество
ты в курсе про специфику работы с макросами в cljs?
источник