усы2

Стой под стрелой

Поступки и мысли, о которых могу вспомнить не краснея

Previous Entry Поделиться Next Entry
Читабельная Кложа
усы2
tonsky
Обнаглел настолько, что код вставляю скриншотами

http://tonsky.me/blog/readable-clojure/

  • 1
(Анонимно)
Сорри, мутно и расплывчато, но проще не могу объяснить.


Нет, всё здорово и понятно :-)

Кложа как инструмент старается решать проблемы максимально абстрактно. Отсюда функциональность, интерфейсы (а не конкретные типы данных), каплинг nil/false (в том числе для совместимости с хостом, но не только), структуры данных, имплементирующие IFn, и т.д.

Мне кажется, то о чём ты говоришь, лучше решать с помощью clojure.spec, а не трансформируя абстрактный код in-place: clojure.spec гораздо более выразительный инструмент для конкретики, и сможет хорошо описать и шейп структуры данных для юзера, и конкретные трансформации, производимые функциями. clojure.spec отделяет implementation details от intent.

И еще момент. Трединг сам по себе это не какая-то семантическая конструкция. Он не несет смысла сам по себе. То, что его применили, не сообщает на семантическом уровне никакой новой информации. Это ровно «так случилось, что ряд операций в данном конкретном случае удобно выстраивается и поэтому сокращается до цепочки». Не больше и не меньше.


Да, конечно. Трединг семантически эквивалентен любой обычной форме. Всё, что я говорил о threading против let, можно читать как plain s-expression vs let.

  • 1
?

Log in

No account? Create an account