Size: a a a

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

2020 February 02

AI

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

AI

Andrey Ivanov in Clojure — русскоговорящее сообщество
ну или binded? поискать в либах или что там есть такого
источник

AI

Andrey Ivanov in Clojure — русскоговорящее сообщество
я помню получал как-то в одну строчку мапку со связанными сомволами в текущем контексте, когда писал отладчик
источник

YK

Yurii Khmelevskii in Clojure — русскоговорящее сообщество
а что значит мап трай.эвал
источник

AI

Andrey Ivanov in Clojure — русскоговорящее сообщество
значит мап по какой-то ерунде, которая чекае аргумент на несвязанный символ )
источник

AI

Andrey Ivanov in Clojure — русскоговорящее сообщество
нашел тот макрос, он список локальных (!) привязок возвращает. Осталось еще глобавльные исключить и все
источник

YK

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

DF

Damir Farazetdinov in Clojure — русскоговорящее сообщество
Sergey Trofimov
кстати, в этом чатике никто игры не пишет на кложе?
именно движковую часть, которая должна быстро работать
IMHO, крамола. Быстро работать и кложа - ортогональные вещи.
Писать на кложе прям движковую часть, если это не тетрис кажется очень смело.
Вот игруха на Unity/Arcadia/ClojureCLR
https://play.google.com/store/apps/details?id=farazetdinov_damir.down_to_earth&showAllReviews=true

Сложность движка - как раз уровень тетриса.
Вторую часть (более голодную до CPU) не стал делать из первой, а с нуля пилил на C# и всё равно упёрся в производительность родной Physics2D в Unity. После отказа от коллайдеров и ещё 4-5 оптимизаций дело пошло (буквально сегодня).

Вывод: сначала запили прототип на Java/C#/JS и на кложе.
Сравни производительность. Если кложа будет устраивать, то флаг в руки!
А спросить в чатике - гадание на кофейной гуще, т.к. очень много аспектов.
И да, если позарез нужен LISP, то наверное копай в сторону чего-то более классического, чем кложа.
источник

YK

Yurii Khmelevskii in Clojure — русскоговорящее сообщество
Andrey Ivanov
нашел тот макрос, он список локальных (!) привязок возвращает. Осталось еще глобавльные исключить и все
можешь показать этот макрос? я не понимаю как это сделать
источник

AI

Andrey Ivanov in Clojure — русскоговорящее сообщество
он не собирает глобальные привязки (ибо их овердофига), только локальные
источник

AI

Andrey Ivanov in Clojure — русскоговорящее сообщество
(defn e [x] (try (let [_ (eval x)] 33) (catch Exception _ x)))

(->>
'(or test (and one two) 123 true (= 123 (inc variable)))
flatten
(filter symbol?)
(map e)
(filter symbol?))
=> (or and one two variable)

макросы только прочекать осталось, придумать как это сделать в рантайме
источник

AI

Andrey Ivanov in Clojure — русскоговорящее сообщество
а тот макрос вот, можешь возвращаемую структуру переделать по вкусу прямо в нем
(defmacro locals-map [] (into {} (for [[sym val] &env] [(name sym) sym])))
источник

YK

Yurii Khmelevskii in Clojure — русскоговорящее сообщество
круто! спасибо, буду дальшее разбтраться как исключить макросы
источник

AK

Azamat Kalimoulline in Clojure — русскоговорящее сообщество
(->> '(or test (and one two) 123 true (= 123 (inc variable)))                    
                          flatten                                                                    
                          (filter symbol?)                                                            
                          (filter (complement resolve))                                              
                          (filter (complement fn?)))
источник

AK

Azamat Kalimoulline in Clojure — русскоговорящее сообщество
Но test оно тоже определено в clojure.core
источник

AI

Andrey Ivanov in Clojure — русскоговорящее сообщество
с макросами навскидку небольшая засадка - их в рантайме вроде как нет, поэтому откуда брать их имена сразу неочевидно. тем более что ты можешь понаписать своих
источник

AI

Andrey Ivanov in Clojure — русскоговорящее сообщество
но дело в том, что у меня большое подозрение, что то что ты делаешь тебе не надо, и задача решается проще. если ты конечно не пишешь тулзу для кложи типа отладчика
источник

YK

Yurii Khmelevskii in Clojure — русскоговорящее сообщество
я хочу сделать что-то типа :auto-deps как здесь https://github.com/Lokeh/helix/blob/master/docs/hooks.md#other-miscellaneous
источник

YK

Yurii Khmelevskii in Clojure — русскоговорящее сообщество
> Finally, helix can use the ClojureScript analyzer to determine which local bindings are used in your Effect and automatically add those to your dependency vector.
источник

DF

Damir Farazetdinov in Clojure — русскоговорящее сообщество
Damir Farazetdinov
IMHO, крамола. Быстро работать и кложа - ортогональные вещи.
Писать на кложе прям движковую часть, если это не тетрис кажется очень смело.
Вот игруха на Unity/Arcadia/ClojureCLR
https://play.google.com/store/apps/details?id=farazetdinov_damir.down_to_earth&showAllReviews=true

Сложность движка - как раз уровень тетриса.
Вторую часть (более голодную до CPU) не стал делать из первой, а с нуля пилил на C# и всё равно упёрся в производительность родной Physics2D в Unity. После отказа от коллайдеров и ещё 4-5 оптимизаций дело пошло (буквально сегодня).

Вывод: сначала запили прототип на Java/C#/JS и на кложе.
Сравни производительность. Если кложа будет устраивать, то флаг в руки!
А спросить в чатике - гадание на кофейной гуще, т.к. очень много аспектов.
И да, если позарез нужен LISP, то наверное копай в сторону чего-то более классического, чем кложа.
...а с нуля пилил на C#...
Кололся, плакал и продолжал писать...

Arcadia/ClojureCLR для экспериментов/исследований - очень годная вещь.
Особенно, если результат исследований приводит к выводу "бесперспективно", потому что не придётся теперь имплементировать на C#.
Для скриптинга тоже. (когда нужно при редактировании сцены нажмакать 100500 однотипных действий).

И ещё: если речь о разработке под мобилы, то когда производительность кложи и некложи будешь сравнивать, то используй "референсную" железяку. Какую-то не очень топовую (у меня например Tele2 Mini). А то если будешь на каком-то 3.3ГГц сравнивать, рискуешь получить ложно-неразличимые результаты.
источник