Size: a a a

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

2021 July 01

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
вот в таком варианте, если не давать имена, не будет понятно, в какой из функций случилась ошибка
(defn ff []
 (if true (fn f1 []) (fn f2 [])))
источник

MB

Mike Bohdan in Clojure — русскоговорящее сообщество
Может быть, у меня все-равно процентов 90 анонимных функций получаются в ходе применения partial или comp)
источник

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
можно не видеть смысла и в продумывании наименований для обычных функций, ведь всегда можно посмотреть в исходники 😊
источник

MB

Mike Bohdan in Clojure — русскоговорящее сообщество
Ну это уже радикализация какая-то
источник

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
68 partial, 152 comp
источник

MB

Mike Bohdan in Clojure — русскоговорящее сообщество
Это из тех 280?
источник

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
ну, я стараюсь писать код, чтобы мне он был понятен спустя некоторое время
именование анонимных функций мне в этом помогает
источник

MB

Mike Bohdan in Clojure — русскоговорящее сообщество
Хороший подход, если работает
источник

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
нет, это дополнительно к тем
просто поискал (fn (partial (comp
источник

MB

Mike Bohdan in Clojure — русскоговорящее сообщество
Я только за, я вот до сих пор не могу привыкнуть, что в кложе не foldl/foldr, а reduce и приходится смотреть с какой стороны стейт😂
источник

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
вот реальный случай
(defn- fn'route->path
 [reitit-router, route-tag]
 (let [match (reitit/match-by-name reitit-router, route-tag)]
   (if (reitit/partial-match? match)
     ; Route with path parameters
     (let [required (:required match)]
       (fn param-route->path
         ([]
          (reitit/match-by-name! reitit-router, route-tag))
         ([params]
          (let [match (reitit/match-by-name! reitit-router, route-tag, (select-keys params required))]
            (if (== (count required) (count params))
              (reitit/match->path match)
              (reitit/match->path match (remove #(required (key %)) params)))))))
     ; Route without path parameters
     (fn simple-route->path
       ([]
        (reitit/match->path match))
       ([params]
        (reitit/match->path match params))))))
источник

MB

Mike Bohdan in Clojure — русскоговорящее сообщество
А на мультиметодах это сделать не проще?
источник

MB

Mike Bohdan in Clojure — русскоговорящее сообщество
Или надо именно возвращение функции?
источник

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
в общем, методом тыка было выяснено, что некоторые непонятки типа «что/где» разрешаются именованием анонимных функций, и это вошло в привычку
источник

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
данный вопрос выходит за рамки настоящего обсуждения 😊
источник

MB

Mike Bohdan in Clojure — русскоговорящее сообщество
Просто у меня было несколько раз подобные кейсы и в итоге переписывал на мультиметоды, а туда уже можно и логирлвание всунуть, чтоб трейс поменьше читать
источник

DL

Dmytro Lispyvnyi '(🌲... in Clojure — русскоговорящее сообщество
как распознать человека, пишущего на кложе не в емаксе :)
источник

DL

Dmytro Lispyvnyi '(🌲... in Clojure — русскоговорящее сообщество
ну и как бы кто мешал тут вынести в defn-ы?
источник

ST

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

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
как?
источник