Size: a a a

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

2020 July 16

Oℕ

Oleg ℕizhnik in Clojure — русскоговорящее сообщество
Поэтому для большинства рассказ о том, что системы типов плохи, потому что тяжело типизировать гетерогенную хешмапу считается булщитом, т.к. они специально не хотят хешмап в своём домене
источник

TP

Tim Plotnikov in Clojure — русскоговорящее сообщество
Короче расскажу историю одну)
Я люблю ФП и всякие разные языки. Решил я как-то сделать пет-проджект, думаю какой язык взять, взял ReasonML (уж больно у окамля экосистема дерьмовая, а тут нода, тыща библиотек итд).

Сел писать, пишу обработчик реквеста на регистрацию пользователя, там полей 5. Короче описал структуру, которая должна прийти. А потом ещё для каждого поля пришлось писать валидацию. А потом ещё были там загвоздки с типами ошибок.
Короче продолбался я с этим пару дней и понял что именно в данном контексте, я делаю очень много лишней работы.

А потом взял кложу, на вход мапа, провалидировал спекой, отдал дальше, обратно как респонс вернул мапу. Когда мало, ошибиться сложно, работало как часы.

Свои проблемы в этом подходе тоже есть (главный вопрос, на который я не нашел пока ответа: нужно ли в каждой функции, которая работает с твоей мапой, делать одну и ту же проверку спекой), но так всё-таки легче. И каждый выбирает тот подход, который лучше сейчас, в данный момент)
источник

TP

Tim Plotnikov in Clojure — русскоговорящее сообщество
Oleg ℕizhnik
Поэтому для большинства рассказ о том, что системы типов плохи, потому что тяжело типизировать гетерогенную хешмапу считается булщитом, т.к. они специально не хотят хешмап в своём домене
Нужна альтернатива хэшпаме: какой-то супертип, который и удовлетворит констрейнтам и будет лёгок в использовании
источник

𝛈µ

𝛈 µ in Clojure — русскоговорящее сообщество
Tim Plotnikov
Короче расскажу историю одну)
Я люблю ФП и всякие разные языки. Решил я как-то сделать пет-проджект, думаю какой язык взять, взял ReasonML (уж больно у окамля экосистема дерьмовая, а тут нода, тыща библиотек итд).

Сел писать, пишу обработчик реквеста на регистрацию пользователя, там полей 5. Короче описал структуру, которая должна прийти. А потом ещё для каждого поля пришлось писать валидацию. А потом ещё были там загвоздки с типами ошибок.
Короче продолбался я с этим пару дней и понял что именно в данном контексте, я делаю очень много лишней работы.

А потом взял кложу, на вход мапа, провалидировал спекой, отдал дальше, обратно как респонс вернул мапу. Когда мало, ошибиться сложно, работало как часы.

Свои проблемы в этом подходе тоже есть (главный вопрос, на который я не нашел пока ответа: нужно ли в каждой функции, которая работает с твоей мапой, делать одну и ту же проверку спекой), но так всё-таки легче. И каждый выбирает тот подход, который лучше сейчас, в данный момент)
После первого абзаца ждал, как все перефарбувалося в зеленый цвет, сдаётся нода была проклятой
источник

Oℕ

Oleg ℕizhnik in Clojure — русскоговорящее сообщество
Tim Plotnikov
Короче расскажу историю одну)
Я люблю ФП и всякие разные языки. Решил я как-то сделать пет-проджект, думаю какой язык взять, взял ReasonML (уж больно у окамля экосистема дерьмовая, а тут нода, тыща библиотек итд).

Сел писать, пишу обработчик реквеста на регистрацию пользователя, там полей 5. Короче описал структуру, которая должна прийти. А потом ещё для каждого поля пришлось писать валидацию. А потом ещё были там загвоздки с типами ошибок.
Короче продолбался я с этим пару дней и понял что именно в данном контексте, я делаю очень много лишней работы.

А потом взял кложу, на вход мапа, провалидировал спекой, отдал дальше, обратно как респонс вернул мапу. Когда мало, ошибиться сложно, работало как часы.

Свои проблемы в этом подходе тоже есть (главный вопрос, на который я не нашел пока ответа: нужно ли в каждой функции, которая работает с твоей мапой, делать одну и ту же проверку спекой), но так всё-таки легче. И каждый выбирает тот подход, который лучше сейчас, в данный момент)
Да, это классическая история пересаживания с языка на язык, можно рассказать точно такую же о переходе с любого языка/технологии на любой другой.

На постнауке есть видео, я сейчас не смог найти. Но кратко: там пересказывается история об испытуемых, которым давали задачи о переливаниях кувшинов разного объёма. После первого инсайта, и нескольких подобных задач найденный метод настолько запоминался, что последующие даже более простые задачи решались таким способом. В качестве издевательства даже давали набор кувшинов, где уже было требуемое количество, и чать испытуемых всё равно использовало закрепившийся метод.

Я сам себя часто ловлю на этом искажении. Поэтому, конечно без опыта хотя бы в месяца три, делать выводы обычно опасно.
Особенно если параллельно продолжаешь старыми инструментами пользоваться
источник

TP

Tim Plotnikov in Clojure — русскоговорящее сообщество
Oleg ℕizhnik
Да, это классическая история пересаживания с языка на язык, можно рассказать точно такую же о переходе с любого языка/технологии на любой другой.

На постнауке есть видео, я сейчас не смог найти. Но кратко: там пересказывается история об испытуемых, которым давали задачи о переливаниях кувшинов разного объёма. После первого инсайта, и нескольких подобных задач найденный метод настолько запоминался, что последующие даже более простые задачи решались таким способом. В качестве издевательства даже давали набор кувшинов, где уже было требуемое количество, и чать испытуемых всё равно использовало закрепившийся метод.

Я сам себя часто ловлю на этом искажении. Поэтому, конечно без опыта хотя бы в месяца три, делать выводы обычно опасно.
Особенно если параллельно продолжаешь старыми инструментами пользоваться
Ага, есть такое))
источник

RK

Ruslan Khafizov in Clojure — русскоговорящее сообщество
Oleg ℕizhnik
Да, это классическая история пересаживания с языка на язык, можно рассказать точно такую же о переходе с любого языка/технологии на любой другой.

На постнауке есть видео, я сейчас не смог найти. Но кратко: там пересказывается история об испытуемых, которым давали задачи о переливаниях кувшинов разного объёма. После первого инсайта, и нескольких подобных задач найденный метод настолько запоминался, что последующие даже более простые задачи решались таким способом. В качестве издевательства даже давали набор кувшинов, где уже было требуемое количество, и чать испытуемых всё равно использовало закрепившийся метод.

Я сам себя часто ловлю на этом искажении. Поэтому, конечно без опыта хотя бы в месяца три, делать выводы обычно опасно.
Особенно если параллельно продолжаешь старыми инструментами пользоваться
Нет, нельзя
То есть понятно есть всегда замедление на новом синтаксисе и идеях
Но в общем и целом пример Reason показателен в том что строгость - она не бесплатна
источник

𝛈µ

𝛈 µ in Clojure — русскоговорящее сообщество
Нет, небесплатна. Но ты же на долгосроке смотришь, на общую стоимость сопровождения проекта, правда?
источник

𝛈µ

𝛈 µ in Clojure — русскоговорящее сообщество
И тут уже не всё так однозначно
источник

RK

Ruslan Khafizov in Clojure — русскоговорящее сообщество
Точно так же как анализ в инженерном вузе читают по-одному, а на мехмате - по другому
Ибо если читать инженерам мехматовскую строгость то на инженерию времени уже не останется
источник

RK

Ruslan Khafizov in Clojure — русскоговорящее сообщество
𝛈 µ
Нет, небесплатна. Но ты же на долгосроке смотришь, на общую стоимость сопровождения проекта, правда?
Тут скорее стоимость ошибки, ибо стоимость исправления ошибки она не так уж и дорога по сравнению со стоимостью типизации всего и вся
источник

RK

Ruslan Khafizov in Clojure — русскоговорящее сообщество
Ruslan Khafizov
Тут скорее стоимость ошибки, ибо стоимость исправления ошибки она не так уж и дорога по сравнению со стоимостью типизации всего и вся
Но если ошибка критична, то да, важно чтобы её не было
Типа как боенг - да, надо чинить косяки, но людей уже не вернёшь
А если это форма на сайте, ну да бог с ней, отрезали фамилию до 10 символов - и так сойдёт
источник

Oℕ

Oleg ℕizhnik in Clojure — русскоговорящее сообщество
Tim Plotnikov
Ага, есть такое))
Вообще я бы сказал, что тема валидации ещё слабо раскрыта на том уровне, что я писал.
Есть класс решений с прописыванием валидаций в типах и автоматической генерацией валидаторов для рекордов с аккумуляцией ошибок.
Обычно они лежат где-то рядом со словосочетанием liquid types/refined types

Основная фишка в том, что затем при работе с такими рекордами вы уже имеете информацию о том, что часть свойств уже проверена и дальше, производя новые верифицированные данные, автоматически можете сделать вывод, какие свойства следуют непосредственно из того, что вы подставили в качестве исходных данных, а какие нужно снова верифицировать.

Т.е. как и в других случаях, типы позволяют вам делать меньше логических рассуждений самостоятельно. Но не сказал бы, что это очень популярный подход.
источник

LL

Lama Lover in Clojure — русскоговорящее сообщество
Привет чат, хочу стать кложуристом. Умею в racket и работаю фуллтайм на elixir. Куда воевать с таким бекграундом, где искать работу?
источник

JC

John Cantrell in Clojure — русскоговорящее сообщество
Привет чат, хочу стать кложуристом. Умею в Idris и работаю фуллтайм на Haskell. Куда воевать с таким бекграундом, где искать работу?
источник

TP

Tim Plotnikov in Clojure — русскоговорящее сообщество
Кто-нибудь работал с core.logic?
Если да, то для каких целей?))
Хочу кое-какую логику попробовать описать с ее помощью вместо десятка ифоф
источник

RK

Ruslan Khafizov in Clojure — русскоговорящее сообщество
Tim Plotnikov
Кто-нибудь работал с core.logic?
Если да, то для каких целей?))
Хочу кое-какую логику попробовать описать с ее помощью вместо десятка ифоф
Чтение книжки TRS 🙂
источник

RK

Ruslan Khafizov in Clojure — русскоговорящее сообщество
Оно что-то по ощущениям ни на что другое больше не годно
источник

LL

Lama Lover in Clojure — русскоговорящее сообщество
John Cantrell
Привет чат, хочу стать кложуристом. Умею в Idris и работаю фуллтайм на Haskell. Куда воевать с таким бекграундом, где искать работу?
за что... :(
источник

Oℕ

Oleg ℕizhnik in Clojure — русскоговорящее сообщество
Alexey Golda
😂 жирно написано от админа Scala канала, работающего в Тинькоф банке скалистом архитектором, который с собой привел еще минимум 2 человек из все того же канала, троллить
Вы знаете, всем тем людям, которые на самом деле сюда приходят тролить обычно грустно, что я, случайно узнающий о существовании группы из канала с перлами и приходящий просто пообщаться воспринимаюсь как их вождь, просто потому, что на ютюбе есть пара видосов с моим лицом.
Стыдно быть таким неопытным конспирологом
источник