Size: a a a

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

2021 March 13

ND

Nikita Domnickij in Clojure — русскоговорящее сообщество
Mike Bohdan
Ну у меня apply это как маркёр, что что-то пошло не так, кроме, наверное случаев, когда я пишу его в связке с partial, типа (partial apply f)
(defn format [& args]
 #?(:cljs (apply gstring/format args)
    :clj (apply clojure.core/format args)))
ну вот такое без апплая не напишешь
источник

MB

Mike Bohdan in Clojure — русскоговорящее сообщество
Nikita Domnickij
(defn format [& args]
 #?(:cljs (apply gstring/format args)
    :clj (apply clojure.core/format args)))
ну вот такое без апплая не напишешь
Согласен, но я и переменное количество аргументов не люблю, выглядит очень криво
источник

DF

Damir Farazetdinov in Clojure — русскоговорящее сообщество
Да, можно заменить
Это
(and
 true
 :not-nil
 (println “hello, I’ve been evaled”))

На это

(every? identity
 (cons true
   (cons :not-nil
      (cons (println “hello, I’ve been evaled”)))))

Но я бы не стал.
источник

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
Nikita Domnickij
(defn format [& args]
 #?(:cljs (apply gstring/format args)
    :clj (apply clojure.core/format args)))
ну вот такое без апплая не напишешь
Можно все 22 арности явно перечислить :-)
источник

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
Damir Farazetdinov
Да, можно заменить
Это
(and
 true
 :not-nil
 (println “hello, I’ve been evaled”))

На это

(every? identity
 (cons true
   (cons :not-nil
      (cons (println “hello, I’ve been evaled”)))))

Но я бы не стал.
Не эквивалентно же...
источник

DF

Damir Farazetdinov in Clojure — русскоговорящее сообщество
Damir Farazetdinov
Да, можно заменить
Это
(and
 true
 :not-nil
 (println “hello, I’ve been evaled”))

На это

(every? identity
 (cons true
   (cons :not-nil
      (cons (println “hello, I’ve been evaled”)))))

Но я бы не стал.
И что-то мне кажется, что все равно оно не ленивое. Кто спец по ленивости?
источник

MB

Mike Bohdan in Clojure — русскоговорящее сообщество
Sergey Trofimov
Можно все 22 арности явно перечислить :-)
Можно написать кодогенератор, как в https://github.com/henryw374/cljc.java-time
источник

IS

Ilshat Sultanov in Clojure — русскоговорящее сообщество
Nikita Domnickij
(defn format [& args]
 #?(:cljs (apply gstring/format args)
    :clj (apply clojure.core/format args)))
ну вот такое без апплая не напишешь
(ns unifier.helpers
 #?(:clj (:refer-clojure :exclude [format]))
 (:require
  #?@(:clj  [[clojure.core :as c]]
      :cljs [[goog.string :as gstr]
             [goog.string.format]])))

(def ^{:added "0.0.10"}
 format
 "Formats a string."
 #?(:clj  c/format
    :cljs gstr/format))
источник

IS

Ilshat Sultanov in Clojure — русскоговорящее сообщество
можно без apply
источник

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
Damir Farazetdinov
И что-то мне кажется, что все равно оно не ленивое. Кто спец по ленивости?
Вторая часть не ленивая
источник

DF

Damir Farazetdinov in Clojure — русскоговорящее сообщество
А можно просто «and»использовать.
источник

MB

Mike Bohdan in Clojure — русскоговорящее сообщество
Damir Farazetdinov
А можно просто «and»использовать.
Не понял
источник

DF

Damir Farazetdinov in Clojure — русскоговорящее сообщество
Sergey Trofimov
Вторая часть не ленивая
Ну ты сечёшь? Запили с ленивостью
источник

DF

Damir Farazetdinov in Clojure — русскоговорящее сообщество
Mike Bohdan
Не понял
Ну с этого срач начался. Что and - макрос и в некоторых местах это доставляет неудобства. И приходится извращаться с помощью apply.
источник

MB

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

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
Damir Farazetdinov
Ну ты сечёшь? Запили с ленивостью
Поздно уже. Ну будет lazy-seq/lazy-cons, но это опять же макросы.
источник

VP

Vladimir Pavlyuk in Clojure — русскоговорящее сообщество
Sergey Trofimov
Поздно уже. Ну будет lazy-seq/lazy-cons, но это опять же макросы.
ага, с ленивостью на пре-евале ничего кроме макросов не справится
источник

DF

Damir Farazetdinov in Clojure — русскоговорящее сообщество
Sergey Trofimov
Поздно уже. Ну будет lazy-seq/lazy-cons, но это опять же макросы.
Да. Давай остановимся.
источник

VP

Vladimir Pavlyuk in Clojure — русскоговорящее сообщество
так что в этом смысле лучше, чем and, не будет
источник

DF

Damir Farazetdinov in Clojure — русскоговорящее сообщество
Аминь
источник