Size: a a a

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

2021 March 13

T

The2lb3oz4dr10½grOfH... in Clojure — русскоговорящее сообщество
А, есть
источник

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
The2lb3oz4dr10½grOfHedgehogs
А если и в  мою тайпхинт добавить?
я же добавил
с рефлексией там другие порядки будут
источник

T

The2lb3oz4dr10½grOfH... in Clojure — русскоговорящее сообщество
Ну короче понятно. peak performance achieved
источник

ST

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

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
The2lb3oz4dr10½grOfHedgehogs
Ну короче понятно. peak performance achieved
по хорошему вместо (constantly nil) надо написать свою rf, которая будет делать println — печатающая редуцирующая функция
источник

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
Sergey Trofimov
по хорошему вместо (constantly nil) надо написать свою rf, которая будет делать println — печатающая редуцирующая функция
  (defn rf'println
   ([])
   ([_])
   ([_ input] (println input)))

 (->> (iterate #(.concat ^String % " *") "*")
      (transduce (take 5) rf'println))


быстрее это не будет, но тут каждый элемент выполняет свою задачу
источник

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
Sergey Trofimov
  (defn rf'println
   ([])
   ([_])
   ([_ input] (println input)))

 (->> (iterate #(.concat ^String % " *") "*")
      (transduce (take 5) rf'println))


быстрее это не будет, но тут каждый элемент выполняет свою задачу
пожалуй лучше обобщить для произвольного сайд-эффекта
  (defn side-effect
   [f]
   (fn
     ([])
     ([_])
     ([_ input] (f input))))

 (->> (iterate #(.concat ^String % " *") "*")
      (transduce (take 5) (side-effect println)))
источник

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
Sergey Trofimov
пожалуй лучше обобщить для произвольного сайд-эффекта
  (defn side-effect
   [f]
   (fn
     ([])
     ([_])
     ([_ input] (f input))))

 (->> (iterate #(.concat ^String % " *") "*")
      (transduce (take 5) (side-effect println)))
ну и конкат здесь совсем уж байтодрочерство, поэтому я за такой финальный вариант
  (defn side-effect
   [f]
   (fn
     ([])
     ([_])
     ([_ input] (f input))))

 (->> (iterate #(str % " *") "*")
      (transduce (take 5) (side-effect println)))
источник

AC

Anton Chikin in Clojure — русскоговорящее сообщество
Vladimir Pavlyuk
А кто знает, почему and и or в кложе выражены макросами?
Иногда это реально создаёт неудобства
так по-другому не получится
источник

AC

Anton Chikin in Clojure — русскоговорящее сообщество
Nikita Domnickij
(every? identity coll) работает как and если что
нет. and эвалит первый элемент и если он false - дальше не эвалит
источник

AC

Anton Chikin in Clojure — русскоговорящее сообщество
а coll - это уже выполненные выражения
источник

ND

Nikita Domnickij in Clojure — русскоговорящее сообщество
Anton Chikin
нет. and эвалит первый элемент и если он false - дальше не эвалит
Уже обсудили всё вчера
источник

AC

Anton Chikin in Clojure — русскоговорящее сообщество
т.е. (and (println 1) (println 2)) напечатает 1
источник

AC

Anton Chikin in Clojure — русскоговорящее сообщество
а every 1 2
источник

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
Anton Chikin
а every 1 2
ты гонишь 😊
(every? println [1 2])
1
=> false
источник

AC

Anton Chikin in Clojure — русскоговорящее сообщество
Sergey Trofimov
ты гонишь 😊
(every? println [1 2])
1
=> false
(every? identity [(println 1) (println 2)])
источник

AC

Anton Chikin in Clojure — русскоговорящее сообщество
Sergey Trofimov
ты гонишь 😊
(every? println [1 2])
1
=> false
Ту да у тебя 1 и 2 заэвалятся в коллекцию
источник

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
Anton Chikin
(every? identity [(println 1) (println 2)])
ну так это не то, о чём вчера речь шла
источник

AC

Anton Chikin in Clojure — русскоговорящее сообщество
(every? identity coll) работает как and если что
источник

ND

Nikita Domnickij in Clojure — русскоговорящее сообщество
Anton Chikin
(every? identity coll) работает как and если что
в случае если хочется сделать apply and
источник