Fork me on GitHub
#clojure-russia
<
2016-10-31
>
seryh14:10:59

а когда вообще имеет смысл использовать трансдьюсеры? Если через lazySeq и так можно декларативно все описывать

(->> [{:foo 1} {:foo 2}] (map :foo) (filter some?) (reduce +))

prepor14:10:49

можно, но

misha14:10:22

редюс не всегда редюсит до скаляра, иногда наоборот расширяет. редюс не всегда последний шаг

prepor14:10:02

1. медленнее 2. не универсально. не применить к каналу, например 3. такие характеристики как паралелльность обработки определяются в момент формирования операций, а не их "запуска"

seryh14:10:43

полезные доводы, спасибо

artemyarulin14:10:27

хм, а как мне узнать что вектор является сабвектором (f [1 2 3] [1 2 3 4]) ;; true сеты не подходят, ибо мне нужен чтоб порядок соблюдался

artemyarulin14:10:46

(let [v1 [1 2 3]
      v2 [1 2 3 4]]
  (-> v2
      (subvec 0 (count v1))
      (= v1)))
на коленке накидал вот так, но мож есть чо получше на побыстрее?

seryh14:10:29

@artemyarulin clojure/core.match не подойдет?

artemyarulin14:10:56

эм, хм. Да думаю будет еще медленнее, хотя не очень уже помню как матч работает. Да неа, не охота либу тащить ради одного раза, мож думал просто чо есть стандартное

rustam.gilaztdinov15:10:28

а sorted-set чем-то не подходит?

artemyarulin15:10:48

ну я не хочу менять порядок

artemyarulin16:10:18

тока-что узнал что есть http://clojuredocs.org/clojure.core/identical%3F, а зафега оно? для интеропа тока или есть какие кейсы в обычной жизни? И в жизни CLJS кста?

seryh16:10:22

(identical? -130 -130) => false оно еще и на 1 байт

seryh16:10:29

для сравнения по адресу а не по значению походу юзается