Size: a a a

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

2021 January 14

IG

Ivan Grishaev in Clojure — русскоговорящее сообщество
Я однажды натырил в питон фич из кложи: https://github.com/igrishaev/f
источник

DP

Dmitry Ponyatov in Clojure — русскоговорящее сообщество
вообще вот на этом залип, и всё время думал "А Clojure склонна к такому inner effect при усложнении проекта через глубокое абстрагирование?"
https://softwareengineering.stackexchange.com/questions/231637/can-a-system-be-100-data-driven
источник

MK

Mikhail Kuzmin in Clojure — русскоговорящее сообщество
Как раскладывать функции по неймспейсам?
Бывает ситуация, что есть некий интерфейс, неявный как ring-обработчик, или явный как мультиметод, протокол.
И есть его реализации.
Вот например в ring есть такой неймспейс и много подобных https://github.com/ring-clojure/ring/blob/master/ring-core/src/ring/middleware/keyword_params.clj#L37
в этом нейспейсе 1 полезная функция, собственно этот неймспейс под нее и создавался.

Вроде бы так правильно, но как-то не удобно держать кучу require. Но и с другой стороны, а как иначе это сделать?
источник

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
Mikhail Kuzmin
Как раскладывать функции по неймспейсам?
Бывает ситуация, что есть некий интерфейс, неявный как ring-обработчик, или явный как мультиметод, протокол.
И есть его реализации.
Вот например в ring есть такой неймспейс и много подобных https://github.com/ring-clojure/ring/blob/master/ring-core/src/ring/middleware/keyword_params.clj#L37
в этом нейспейсе 1 полезная функция, собственно этот неймспейс под нее и создавался.

Вроде бы так правильно, но как-то не удобно держать кучу require. Но и с другой стороны, а как иначе это сделать?
можно взять [potemkin :refer [import-vars]] и сделать новый неймспейс, в котором собрать функции из других неймспейсов
источник

KC

Kirill Chernyshov in Clojure — русскоговорящее сообщество
Mikhail Kuzmin
Как раскладывать функции по неймспейсам?
Бывает ситуация, что есть некий интерфейс, неявный как ring-обработчик, или явный как мультиметод, протокол.
И есть его реализации.
Вот например в ring есть такой неймспейс и много подобных https://github.com/ring-clojure/ring/blob/master/ring-core/src/ring/middleware/keyword_params.clj#L37
в этом нейспейсе 1 полезная функция, собственно этот неймспейс под нее и создавался.

Вроде бы так правильно, но как-то не удобно держать кучу require. Но и с другой стороны, а как иначе это сделать?
А чем множественные require не нравятся?
источник

MK

Mikhail Kuzmin in Clojure — русскоговорящее сообщество
Kirill Chernyshov
А чем множественные require не нравятся?
Это необъективная вкусовщина и объяснить это врядли смогу.
Может у кого-нибудь есть такие ощущения?
Или да, такое есть, так бывает и ничего луше не получится, а если очень хочется, то можно взять potemkin.
источник

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
Mikhail Kuzmin
Как раскладывать функции по неймспейсам?
Бывает ситуация, что есть некий интерфейс, неявный как ring-обработчик, или явный как мультиметод, протокол.
И есть его реализации.
Вот например в ring есть такой неймспейс и много подобных https://github.com/ring-clojure/ring/blob/master/ring-core/src/ring/middleware/keyword_params.clj#L37
в этом нейспейсе 1 полезная функция, собственно этот неймспейс под нее и создавался.

Вроде бы так правильно, но как-то не удобно держать кучу require. Но и с другой стороны, а как иначе это сделать?
ещё (для мультиметодов) я использую макрос, который реквайрит все файлы из указанного базового неймспейса
макрос написал, когда задолбался забывать реквайрить мультиметоды
источник

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
Sergey Trofimov
ещё (для мультиметодов) я использую макрос, который реквайрит все файлы из указанного базового неймспейса
макрос написал, когда задолбался забывать реквайрить мультиметоды
к сожалению, не работает в cljs
источник

MK

Mikhail Kuzmin in Clojure — русскоговорящее сообщество
Sergey Trofimov
ещё (для мультиметодов) я использую макрос, который реквайрит все файлы из указанного базового неймспейса
макрос написал, когда задолбался забывать реквайрить мультиметоды
так может взять tools.namespace и просканировать файлики и подгрузить все эти  неймспейсы?
источник

KC

Kirill Chernyshov in Clojure — русскоговорящее сообщество
Mikhail Kuzmin
так может взять tools.namespace и просканировать файлики и подгрузить все эти  неймспейсы?
так а если это не то что хочется? require если что потенциально может принести мутации глобальные, мультиметода в пример
источник

KC

Kirill Chernyshov in Clojure — русскоговорящее сообщество
явное имхо лучше неявного
источник

MK

Mikhail Kuzmin in Clojure — русскоговорящее сообщество
Kirill Chernyshov
так а если это не то что хочется? require если что потенциально может принести мутации глобальные, мультиметода в пример
если я правильно понял, Сергей как раз подгружает неймспейсы, которые меняют состоние через defmethod
источник

KC

Kirill Chernyshov in Clojure — русскоговорящее сообщество
ну да, у меня есть пример проектика с двумя точками входа. одна испольщует один набор defmethod, другая — иной набор
источник

KC

Kirill Chernyshov in Clojure — русскоговорящее сообщество
и для того что бы это нормально работало у меня есть два нэймспейса (по одному на точку входа) в которых явно перечислены нэймспейсы необходимые для их работы
источник

T

TGG in Clojure — русскоговорящее сообщество
Добрый день.
Понимаю, что уже достал всех со своим JSON, но тыкните нубику что делать, если lein не нашёл jsonita.
https://github.com/metosin/jsonista
источник

KC

Kirill Chernyshov in Clojure — русскоговорящее сообщество
jsonita поправить опечатку )
как ты в зависимости ее добавил?
источник

T

TGG in Clojure — русскоговорящее сообщество
Kirill Chernyshov
jsonita поправить опечатку )
как ты в зависимости ее добавил?
Спасибо. Не заметил)
источник

T

TGG in Clojure — русскоговорящее сообщество
Правда выдало это.
Syntax error (FileNotFoundException) compiling at (telegram_bot_protector_test/core.clj:1:1).
Could not locate jsonita/core__init.class, jsonita/core.clj or jsonita/core.cljc on classpath.
источник

KC

Kirill Chernyshov in Clojure — русскоговорящее сообщество
ну так это не ошибка leiningen, смотри, ругается явно на то что фаил с именем jsonita… не найден. тут опечатка
источник

T

TGG in Clojure — русскоговорящее сообщество
Kirill Chernyshov
ну так это не ошибка leiningen, смотри, ругается явно на то что фаил с именем jsonita… не найден. тут опечатка
А, и в коде же исправить надо)
источник