Size: a a a

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

2020 March 13

MA

Mike Ananev in Clojure — русскоговорящее сообщество
Oleg Roshchupkin
На самом деле и нам уже нужно понемногу переходить на удалёнку )
Нас уже переводят всех кого могут
источник

MA

Mike Ananev in Clojure — русскоговорящее сообщество
Впн наше все
источник

AL

Arseniy Lebedev in Clojure — русскоговорящее сообщество
Я между делом что-то написал, но не могу сказать что получилось сильно короче
источник

AL

Arseniy Lebedev in Clojure — русскоговорящее сообщество
источник

AL

Arseniy Lebedev in Clojure — русскоговорящее сообщество
Ну и расчёт расстояния от балды
источник

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
Arseniy Lebedev
Я между делом что-то написал, но не могу сказать что получилось сильно короче
да вроде и тупо в лоб нормально получается
    (->> (for [{name-i :name, city-i :city, lat-i :lat, lon-i :lon :as place-i} places
              {name-j :name, city-j :city, lat-j :lat, lon-j :lon :as place-j} places
              :when (not= name-i name-j)]
          (let [coordinate-i (c-l-location lat-i lon-i)
                coordinate-j (c-l-location lat-j lon-j)
                dist-meters  (calc-dist coordinate-i, coordinate-j)
                dist-miles   (meters->miles dist-meters)]
            {:meters dist-meters
             :miles  dist-miles
             :places [(assoc place-i :coordinate coordinate-i)
                      (assoc place-j :coordinate coordinate-j)]}))
       (into []))
источник

AL

Arseniy Lebedev in Clojure — русскоговорящее сообщество
Я богомерзкие мили не стал реализовывать)
источник

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
Sergey Trofimov
да вроде и тупо в лоб нормально получается
    (->> (for [{name-i :name, city-i :city, lat-i :lat, lon-i :lon :as place-i} places
              {name-j :name, city-j :city, lat-j :lat, lon-j :lon :as place-j} places
              :when (not= name-i name-j)]
          (let [coordinate-i (c-l-location lat-i lon-i)
                coordinate-j (c-l-location lat-j lon-j)
                dist-meters  (calc-dist coordinate-i, coordinate-j)
                dist-miles   (meters->miles dist-meters)]
            {:meters dist-meters
             :miles  dist-miles
             :places [(assoc place-i :coordinate coordinate-i)
                      (assoc place-j :coordinate coordinate-j)]}))
       (into []))
работу не проверял, но смысл вроде ясен
источник

AL

Arseniy Lebedev in Clojure — русскоговорящее сообщество
У тебя нет проверки на отсутствие значений, она как я понял важная
источник

AI

Andrey Ivanov in Clojure — русскоговорящее сообщество
в  :let & :when фора все проверки вынести и вообще будет пара строк
источник

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
Arseniy Lebedev
У тебя нет проверки на отсутствие значений, она как я понял важная
у нас такая проверка спекой делается «до того как»
ну добавится один :when, что это меняет
источник

AL

Arseniy Lebedev in Clojure — русскоговорящее сообщество
Andrey Ivanov
в  :let & :when фора все проверки вынести и вообще будет пара строк
Пкжите
источник

AL

Arseniy Lebedev in Clojure — русскоговорящее сообщество
Я редко это форму использую, хотел бы понят
источник

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
    (->> (for [{name-i :name, city-i :city, lat-i :lat, lon-i :lon :as place-i} places
              {name-j :name, city-j :city, lat-j :lat, lon-j :lon :as place-j} places
              :when (and name-i, city-i, lat-i, lon-i
                         name-j, city-j, lat-j, lon-j
                         (not= name-i name-j))
              :let [coordinate-i (c-l-location lat-i lon-i)
                    coordinate-j (c-l-location lat-j lon-j)
                    dist-meters  (calc-dist coordinate-i, coordinate-j)]]
          {:meters dist-meters
           :miles (meters->miles dist-meters)
           :places [(assoc place-i :coordinate coordinate-i)
                    (assoc place-j :coordinate coordinate-j)]})
       (into []))
источник

AI

Andrey Ivanov in Clojure — русскоговорящее сообщество
этож лист компрехеншен (он же лист монада), там и гарды и леты можно ) чтобы показать, надо задачу выяснять. но смысл в том, что ты с легкостью внутри фора делаешь локальные биндинги и накладываешь условия попадания элементов в результирующий список
источник

AL

Arseniy Lebedev in Clojure — русскоговорящее сообщество
Задача типа в том что у тебя есть два списка локаций, и надо сделать список дистанций между каждой к каждой
источник

AI

Andrey Ivanov in Clojure — русскоговорящее сообщество
Сергей выше вроде идею правильно выразил, только у него будут дубли А-Б и Б-А, но их тоже легко убрать в  :when
источник

AI

Andrey Ivanov in Clojure — русскоговорящее сообщество
Но он бывший скалист, знает про лист-компрехеншены и монады, и недавно еще читал )
источник

ST

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

AI

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