Size: a a a

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

2020 July 19

AC

Anton Chikin in Clojure — русскоговорящее сообщество
Вопрос только покрывает ли тотальное обмазывание типами каждой (каждой!) функции издержки от таких багов?
источник

AC

Anton Chikin in Clojure — русскоговорящее сообщество
Ответ имхо нет
источник

AC

Anton Chikin in Clojure — русскоговорящее сообщество
Andrey Osnovin
@achikin а что будешь делать с опциональным ключём в мапе который поменяли? Насколько быстро найдёшь изменения опираясь на репл (и пусть даже тесты, спеку и т.д, ключ то опциональный). Условного говоря было :alive стало :is-alive
ну и ты можешь на входе в систему поменять is-alive обратно на alive
источник

AO

Andrey Osnovin in Clojure — русскоговорящее сообщество
Ты имеешь ввиду, что проще сделать wrapper над внешним api когда у тебя мапа?
источник

A

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

AC

Anton Chikin in Clojure — русскоговорящее сообщество
Andrey Osnovin
Ты имеешь ввиду, что проще сделать wrapper над внешним api когда у тебя мапа?
Да, но это не так важно. Это уже скорее методы решения проблемы.
источник

VL

Vlad Lisovsky in Clojure — русскоговорящее сообщество
Aleksey @cheatex
TLDR; данные в реальном мире мало похожи на ADT и очень похожи на мапки.
Об этом
источник

AC

Anton Chikin in Clojure — русскоговорящее сообщество
Vlad Lisovsky
Вот да, где об этом почитать?
Об этом Хикки любит порассуждать в толках
источник

A

Aleksey @cheatex in Clojure — русскоговорящее сообщество
Vlad Lisovsky
Об этом
В смысле какуюто научную работу на тему "на что больше похожи данные"? Пока не встречал, хотя было бы интересно посмотреть как это можно формально исследовать.
источник

AC

Anton Chikin in Clojure — русскоговорящее сообщество
Aleksey @cheatex
В смысле какуюто научную работу на тему "на что больше похожи данные"? Пока не встречал, хотя было бы интересно посмотреть как это можно формально исследовать.
На буритто :)
источник

AC

Anton Chikin in Clojure — русскоговорящее сообщество
Ну или на котят :)
источник

A

Aleksey @cheatex in Clojure — русскоговорящее сообщество
ИМХО на ктулху
источник

A

Anton in Clojure — русскоговорящее сообщество
хранилища данных они же уходят от жестких схем данных, а в код мы все еще тянем
источник

Г

Григорий in Clojure — русскоговорящее сообщество
Aleksey @cheatex
В смысле какуюто научную работу на тему "на что больше похожи данные"? Пока не встречал, хотя было бы интересно посмотреть как это можно формально исследовать.
Факультет прикладной психоделики
источник

AC

Anton Chikin in Clojure — русскоговорящее сообщество
Aleksey @cheatex
В смысле какуюто научную работу на тему "на что больше похожи данные"? Пока не встречал, хотя было бы интересно посмотреть как это можно формально исследовать.
Есть теорема Геделя о неполноте.
источник

AC

Anton Chikin in Clojure — русскоговорящее сообщество
Из которой кмк следует что никакая ADT не может полно и непротиворечиво описать все на свете данные
источник

AC

Anton Chikin in Clojure — русскоговорящее сообщество
Но я сразу скажу что я не ахти какой спец в этом - просто прочитал Гедель, Эшер, Бах
источник

ИФ

Иван Федоров... in Clojure — русскоговорящее сообщество
Andrey Osnovin
А как ты узнаешь, что она возвращает User? У тебя на выходе будет какая-то мапа и тебе придётся в репле смотреть что это за мапа. У меня претензия к тому, что нельзя заранее сказать что за мапа вернётся, какая у неё структура, вложенность и т.д. Можно сделать (defrecord User [...]), и даже написать  (defn auth ^User [...] (->User ...)), но оно почему-то всё равно не проверяется в рантайме и я не видел на гитхабе что бы кто-то так делал
Если ты пишешь генератор всего – тогда просто встроить спеку (clojure.spec.alpha) в дизайн.

Если ты пишешь не генератор всего и не знаешь что тебе вернётся – это проблема дизайна. Можно использовать спеку как костыль, но это всё равно проблема дизайна.

В нашем культе считается что наилучшее средство от багов – дизайн. Hammock driven development. Подумать прежде чем писать. Спасает от всех видов багов, не только типизации.
источник

AC

Anton Chikin in Clojure — русскоговорящее сообщество
Иван Федоров
Если ты пишешь генератор всего – тогда просто встроить спеку (clojure.spec.alpha) в дизайн.

Если ты пишешь не генератор всего и не знаешь что тебе вернётся – это проблема дизайна. Можно использовать спеку как костыль, но это всё равно проблема дизайна.

В нашем культе считается что наилучшее средство от багов – дизайн. Hammock driven development. Подумать прежде чем писать. Спасает от всех видов багов, не только типизации.
Ну тут бы адепт типов тебе сказал что как раз типы помогают дизайну и позволяют компилятору валидировать твой дизайн
источник

AL

Arseniy Lebedev in Clojure — русскоговорящее сообщество
Anton Chikin
Из которой кмк следует что никакая ADT не может полно и непротиворечиво описать все на свете данные
Ват
источник