Size: a a a

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

2020 March 13

Д

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

ИС

Ильшат Султанов in Clojure — русскоговорящее сообщество
Andrey Ivanov
Да сплошь и рядом надо собрать и показать все ошибки а не только первую встреченную
ошибки бывают разные :)
источник

TP

Tim Plotnikov in Clojure — русскоговорящее сообщество
Sergey Trofimov
вот-вот, потом эти рельсы по всему коду
и у каждого производителя свой стандарт на колею 😊
Вот не первый раз уже встречаю вот это выражение «по всему коду») И пока для себя не могу понять что оно значит. Вот пишешь ты на джаве, у тебя там классы по всему коду, try/catch разползается по всему коду. Код по всему коду в конце концов))

Объясните ваше понимание проблемы))
источник

ИС

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

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
Tim Plotnikov
сразу покажу зачем это надо:
(match (validate data)
 [:ok validated-data] (match (use validated-data)
                        [:ok result] (ok result)
                        [:error msg] (bad-request msg))
 [:error msg] (bad-request msg))
то есть на обычных исключениях это записывается так
(try
 (-> data
     (validate)
     (use)
     (ok))
 (catch Throwable ex
   (bad-request ex)))
источник

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
Ильшат Султанов
Ну вот провалидировали данные - есть несколько ошибок - собрали все, а не первую попавшуюся и вернули. Дальнейшую обработку же нет необходимости выполнять?
обычно возвращается пользователю на исправление инпута 😊
источник

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
Tim Plotnikov
Вот не первый раз уже встречаю вот это выражение «по всему коду») И пока для себя не могу понять что оно значит. Вот пишешь ты на джаве, у тебя там классы по всему коду, try/catch разползается по всему коду. Код по всему коду в конце концов))

Объясните ваше понимание проблемы))
пока у тебя стандартная библиотека по всему коду — это всем понятно

разберём пример с failure
вот мы выбрали её использовать
простые предикаты не работают, нужно оборачивать
предикаты удваиваются
нам это надоедает, мы теперь пишем только failure совместимые предикаты, которые мы не можем использовать со сторонними решениями без адаптеров
тут мы решили заменить failure на что-то другое — да ну нафиг 😊
источник

ИС

Ильшат Султанов in Clojure — русскоговорящее сообщество
Sergey Trofimov
обычно возвращается пользователю на исправление инпута 😊
я вот и уточнил, где и какие ошибки собрали)
источник

ST

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

разберём пример с failure
вот мы выбрали её использовать
простые предикаты не работают, нужно оборачивать
предикаты удваиваются
нам это надоедает, мы теперь пишем только failure совместимые предикаты, которые мы не можем использовать со сторонними решениями без адаптеров
тут мы решили заменить failure на что-то другое — да ну нафиг 😊
вместо стандартных threading macros у нас везде монстры какие-то
источник

TP

Tim Plotnikov in Clojure — русскоговорящее сообщество
Sergey Trofimov
пока у тебя стандартная библиотека по всему коду — это всем понятно

разберём пример с failure
вот мы выбрали её использовать
простые предикаты не работают, нужно оборачивать
предикаты удваиваются
нам это надоедает, мы теперь пишем только failure совместимые предикаты, которые мы не можем использовать со сторонними решениями без адаптеров
тут мы решили заменить failure на что-то другое — да ну нафиг 😊
У меня наверное нет столько опыта, слышал про замену библиотек/подходов только от других. Сам пока не встречал, чтобы по каким-то объективным причинам (то есть исключая «надоело») меняли там базу данных в проекте или способ обработки ошибок)
источник

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
Sergey Trofimov
вместо стандартных threading macros у нас везде монстры какие-то
то есть у нас вместо понятного любому кложуристу кода — opinionated framework
источник

ИС

Ильшат Султанов in Clojure — русскоговорящее сообщество
Sergey Trofimov
то есть на обычных исключениях это записывается так
(try
 (-> data
     (validate)
     (use)
     (ok))
 (catch Throwable ex
   (bad-request ex)))
Я вот для такого лаконичного кода и делал свою либу, чтобы можно было использовать макросы типа -> и some-> только для ошибок. Все варианты типа failjure тоже оказались монструозными и не гибкими
источник

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
Tim Plotnikov
У меня наверное нет столько опыта, слышал про замену библиотек/подходов только от других. Сам пока не встречал, чтобы по каким-то объективным причинам (то есть исключая «надоело») меняли там базу данных в проекте или способ обработки ошибок)
ну у меня было так
я сделал библиотеку, в которой использовались монады и это немного торчало наружу
в результате в клиентских приложениях были эти неуместные операции с монадами
да и сам код библиотеки выглядел как с другой планеты
в общем буквально недавно я провёл демонадизацию 😊
источник

ИС

Ильшат Султанов in Clojure — русскоговорящее сообщество
😁
источник

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
Ильшат Султанов
Я вот для такого лаконичного кода и делал свою либу, чтобы можно было использовать макросы типа -> и some-> только для ошибок. Все варианты типа failjure тоже оказались монструозными и не гибкими
но макросы свои же, не стандартные?
источник

ИС

Ильшат Султанов in Clojure — русскоговорящее сообщество
а есть ссылка посмотреть?
источник

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
Ильшат Султанов
а есть ссылка посмотреть?
к кому вопрос? на что посмотреть?
источник

ИС

Ильшат Султанов in Clojure — русскоговорящее сообщество
Sergey Trofimov
но макросы свои же, не стандартные?
да свои макросы 1 в 1 как в clojure.core просто предикат проверки свой
источник

ИС

Ильшат Султанов in Clojure — русскоговорящее сообщество
Sergey Trofimov
к кому вопрос? на что посмотреть?
твоей либы
источник

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
нет, но можно gist какой-нибудь сварганить
источник