Size: a a a

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

2021 February 24

KC

Kirill Chernyshov in Clojure — русскоговорящее сообщество
Mike Bohdan
еще самое важное, для меня, отличие let и def – рекурсивные определения
(def fibs (lazy-cat [1 1] (map + fibs (rest fibs)))) – работает
(let [fibs (lazy-cat [1 1] (map + fibs (rest fibs)))]
 (take 10 fibs))

не видит переменную в определении переменной
На то он и локальный скоуп)
источник

MB

Mike Bohdan in Clojure — русскоговорящее сообщество
Kirill Chernyshov
На то он и локальный скоуп)
ну в языке Х такое можно)
источник

KC

Kirill Chernyshov in Clojure — русскоговорящее сообщество
Mike Bohdan
ну в языке Х такое можно)
Да даже в кложе можно через let-fn
источник

MB

Mike Bohdan in Clojure — русскоговорящее сообщество
Kirill Chernyshov
Да даже в кложе можно через let-fn
но fibs в данном случае не функа, а просто лениывй список
источник

MB

Mike Bohdan in Clojure — русскоговорящее сообщество
определенный через себя
источник

KC

Kirill Chernyshov in Clojure — русскоговорящее сообщество
Mike Bohdan
но fibs в данном случае не функа, а просто лениывй список
(letfn [(fibs []
         (lazy-cat [1 1] (map + (fibs) (rest (fibs)))))]
 (take 10 (fibs)))
источник

MB

Mike Bohdan in Clojure — русскоговорящее сообщество
Kirill Chernyshov
(letfn [(fibs []
         (lazy-cat [1 1] (map + (fibs) (rest (fibs)))))]
 (take 10 (fibs)))
это же не эквивалентные решения.
ленивый список сделает 10 элементов и сохранит и если ты будешь обрабатывать 15 элементов в следующей строке – просто возьмет готовые ззначения первых 10, а функа – всегда будет генерить список с 0
источник

KC

Kirill Chernyshov in Clojure — русскоговорящее сообщество
я и не говорил что они эквивалентные ) только про то что можно использовать letfn в таких случаях
источник

AB

Alex Bubnov in Clojure — русскоговорящее сообщество
Kirill Chernyshov
я и не говорил что они эквивалентные ) только про то что можно использовать letfn в таких случаях
так нельзя же - в нем главное не работает.
источник

DL

Dmytro Lispyvnyi '(🌲... in Clojure — русскоговорящее сообщество
Kirill Chernyshov
Например объявить мультиметрд с диспатчем по функе от контент тайпа. Реализации методов отдать консьюмеру библиотеки. Предоставить свои варианты для популярных форматов
дык это придётся на каждый чих описывать :|
источник

KC

Kirill Chernyshov in Clojure — русскоговорящее сообщество
изначально же обсуждали early/late binding
в let — late
в letfn — early
в def — early
источник

KC

Kirill Chernyshov in Clojure — русскоговорящее сообщество
Dmytro Lispyvnyi '(🌲 🍺)
дык это придётся на каждый чих описывать :|
на каждый отличный content-type, да
но это не значит что application/json и application/hal+json нельзя определить одним кодеком
источник

KC

Kirill Chernyshov in Clojure — русскоговорящее сообщество
зато это дает возможность гибко настраивать что и для чего использовать и как расширять возможности библиотеки
источник

IG

Ivan Grishaev in Clojure — русскоговорящее сообщество
по-хорошему в clj-http надо было сделать мульт, который бы расширялся доп. библиотекой clj-http-json
источник

DL

Dmytro Lispyvnyi '(🌲... in Clojure — русскоговорящее сообщество
Ivan Grishaev
по-хорошему в clj-http надо было сделать мульт, который бы расширялся доп. библиотекой clj-http-json
вот это да, ок идея
источник

DL

Dmytro Lispyvnyi '(🌲... in Clojure — русскоговорящее сообщество
Ivan Grishaev
по-хорошему в clj-http надо было сделать мульт, который бы расширялся доп. библиотекой clj-http-json
clj-http-cheshire, я б сказал
источник

IG

Ivan Grishaev in Clojure — русскоговорящее сообщество
и собрать бандл clj-http, clj-http-full
источник

IG

Ivan Grishaev in Clojure — русскоговорящее сообщество
как в ring, мульит-проектный реп
источник

IG

Ivan Grishaev in Clojure — русскоговорящее сообщество
у них просто подход как питоне, когда модули ищутся в рантайме, и если нет, то исключение.
источник

KC

Kirill Chernyshov in Clojure — русскоговорящее сообщество
Ivan Grishaev
по-хорошему в clj-http надо было сделать мульт, который бы расширялся доп. библиотекой clj-http-json
И что диспатч функа будет делать?
источник