Size: a a a

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

2020 December 15

DF

Damir Farazetdinov in Clojure — русскоговорящее сообщество
3. простой язык для непростой проблемы - нонсенс. Ну если не кложа.
источник

DF

Damir Farazetdinov in Clojure — русскоговорящее сообщество
у меня предполагается, что правил будет много - под сотню. тоже хотел какое-то декларативное описание. но пока не придумал ничего.
зато придумал кое-что другое: валидаторы выстраиваются в цепочку интерцепторов.
если какой-то валидатор что-то хочет сказать, то делает conj в ctx под каким-то ключом.
дело в том, что у меня бывает такое: нескольким валидаторам необходимо одно и то же вычисляемое из входных данных значение (например что-то отфильтрованное или другой агрегат). для вычисления этого значения в начале цепочки ставится отдельный интерцептор, а после него другие интерцепторы уже только валидируют.

может тебе тоже надо разделить процесс на два этапа:
1. сначала входные данные привести к какому-то более простому виду.
2. натравить валидаторы на упрощённые структуры.

При таком подходе ты сможешь описание валидаторов сделать проще.
источник

DF

Damir Farazetdinov in Clojure — русскоговорящее сообщество
а ещё есть т.н. rule-engines: https://github.com/cerner/clara-rules
источник

DF

Damir Farazetdinov in Clojure — русскоговорящее сообщество
я наверное тоже её заюзаю.
источник

KC

Kirill Chernyshov in Clojure — русскоговорящее сообщество
https://github.com/noprompt/meander
Можно посмотреть на вот эту штуку. По идее с ее помощью можно декларативно описать правила валидации сложной структуры
источник

AG

Anatoliy Guliy in Clojure — русскоговорящее сообщество
Damir Farazetdinov
тоже чё-то я запутался.
Тебе нужны как бы две вещи (ортогональные?):
1. доступ к данным как в xPath
2. валидация с кроссзависимостями, уровнями вложенности и рекурсиями
а ещё:
3. простой язык, чтобы юзеры могли сами прогать

1. юзай датомик там, где нужно xPath. То, что Бог прописал.
2. валидация с непростыми правилами - это да. наверное отдельная тема.
у меня щас примерно такое в голове в фоне варится.
уже почти готово (вилкой прокалывается)
Ну ты видел схематрон? Вот это то, что нужно, но там xml и xslt … прямо сильно не хочу это тащить…
источник

AG

Anatoliy Guliy in Clojure — русскоговорящее сообщество
Kirill Chernyshov
https://github.com/noprompt/meander
Можно посмотреть на вот эту штуку. По идее с ее помощью можно декларативно описать правила валидации сложной структуры
Ну эту либу я знаю, даже немного юзал. Но specter для моих задач больше подходит, наверное, пока на этом остановлюсь.
источник

D

Doshich in Clojure — русскоговорящее сообщество
Ребят, пользовался кто-то clojure-clr?
источник

AZ

Aydar Zarifullin in Clojure — русскоговорящее сообщество
Doshich
Ребят, пользовался кто-то clojure-clr?
Проект скорее мертв чем жив. Тебе точно именно Net framework нужен?
источник

D

Doshich in Clojure — русскоговорящее сообщество
Ды, я хотел dll'ки шарповые подергать...
источник

D

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

D

Doshich in Clojure — русскоговорящее сообщество
Я пытаюсь скастить com-объект к типу, а мне говорят

Не удалось привести тип объекта "System.RuntimeType" к типу "clojure.lang.IFN"
источник

PP

Pavel Peganov in Clojure — русскоговорящее сообщество
Doshich
Я пытаюсь скастить com-объект к типу, а мне говорят

Не удалось привести тип объекта "System.RuntimeType" к типу "clojure.lang.IFN"
Хм, каким способом? В смысле, как это синтаксически выглядит?
источник

PP

Pavel Peganov in Clojure — русскоговорящее сообщество
Сообщение об ошибке смахивает на то, что каст сделан в стиле Си, типа (тип)значение, в кложе это не работает, потому что (т) это вызов без аргументов т как функции, вот он и жалуется, что "не получается рантайм-тип воспринимать как кложефункцию".
источник

PP

Pavel Peganov in Clojure — русскоговорящее сообщество
Не знаю насколько это применимо к ClojureCLR, но может сработать (cast тип значение)
источник

D

Doshich in Clojure — русскоговорящее сообщество
Pavel Peganov
Сообщение об ошибке смахивает на то, что каст сделан в стиле Си, типа (тип)значение, в кложе это не работает, потому что (т) это вызов без аргументов т как функции, вот он и жалуется, что "не получается рантайм-тип воспринимать как кложефункцию".
Аа, вот в чем дело
источник

D

Doshich in Clojure — русскоговорящее сообщество
Спасибо)
источник

D

Doshich in Clojure — русскоговорящее сообщество
Pavel Peganov
Не знаю насколько это применимо к ClojureCLR, но может сработать (cast тип значение)
Такое тоже не работает, но уже с более логичной ошибкой
источник

D

Doshich in Clojure — русскоговорящее сообщество
Пипес я слепой...
источник

D

Doshich in Clojure — русскоговорящее сообщество
Оказалось я делал ((cast ...
Вместо (cast ...
источник