This page is not created by, affiliated with, or supported by Slack Technologies, Inc.
2016-03-03
Channels
- # admin-announcements (2)
- # beginners (18)
- # boot (118)
- # cider (12)
- # cljs-dev (12)
- # cljsrn (24)
- # clojure (142)
- # clojure-art (4)
- # clojure-bangladesh (3)
- # clojure-ireland (1)
- # clojure-italy (7)
- # clojure-norway (4)
- # clojure-poland (207)
- # clojure-russia (101)
- # clojurescript (108)
- # clojurewerkz (2)
- # core-async (6)
- # css (8)
- # data-science (23)
- # datomic (31)
- # devcards (2)
- # emacs (8)
- # funcool (25)
- # hoplon (34)
- # immutant (78)
- # ldnclj (7)
- # lein-figwheel (4)
- # leiningen (6)
- # luminus (35)
- # off-topic (1)
- # om (119)
- # onyx (43)
- # parinfer (29)
- # proton (11)
- # re-frame (25)
- # remote-jobs (1)
- # slack-help (1)
- # spacemacs (3)
- # yada (10)
Привет, ребята Нубские вопросы можно здесь задавать или лучше в #C053AK3F9?
Короче. начал читать braveclojure. Там такая задача:
Write a function, mapset, that works like map except the return value is a set:
(mapset inc [1 1 2 2])
; => #{2 3}
Сначала решил так:
(defn mapset1
[proc col]
(set (map proc col)))
(mapset1 inc [1 2 3])
=> #{4 3 2}
Потом вот так: (defn mapset3
[proc coll]
(loop [items coll
result #{}]
(if (empty? items)
result
(recur (rest items) (conj result (proc (first items)))))))
(mapset3 inc [1 2 3 4])
=> #{4 3 2 5}
@antonshwab: теперь надо глянуть на reduce %)
Вопрос 1: Почему set
перемешивает элементы?
Т. е. всегда нужно выход сета запускать в сорт?
можно короче чутка (def mapset1 (comp set map))
да неа, в этом смысл сета - набор уникальных элементов без порядка
ну ладно чутка по другому - порядок undefined
есть вроде sorted-set
Но ведь порядок не может быть случайным. Он наверное проходит по коллекции и сравнивает каждый элемент с остальными, чтобы оставить уникальные. Он что не попорядку идет?
> (comp set map) этот вариант не учит особо ничему, я думаю упражнение про рекурсии (явные и предзаданные, типа reduce)
Ну это заместо (defn mapset1 [proc col] (set (map proc col)))
да, я только начал) @larhat
как раз офигенно учит как добавлять функционал к уже существующим функциям
>Но ведь порядок не может быть случайным. Он наверное проходит по коллекции и сравнивает каждый элемент с остальными, чтобы оставить уникальные наверно проходит, а может и нет, а может завтра не будет. Порядок в сетах undefined и может быть любым
@antonshwab: например set может быть реализован в виде бинарного дерева, в рубях он когда-то был в виде мапа) может переделали
@artemyarulin: А где можно посмотреть как реализована функция сет, всмысле как она работает?
> как раз офигенно учит как добавлять функционал к уже существующим функциям думаю, там про композицию отдельно будут задачки :)
@larhat: Аа ну тогда да, может рано и впрям
@antonshwab: дак исходники кложуры core.clj
а оттуда скорее всего в жаву класс какой. Я бы не забивал голову пока
https://github.com/clojure/clojure/blob/master/src/clj/clojure/core.clj#L3975-L3984
(defn set
"Returns a set of the distinct elements of coll."
{:added "1.0"
:static true}
[coll]
(if (set? coll)
(with-meta coll nil)
(if (instance? clojure.lang.IReduceInit coll)
(persistent! (.reduce ^clojure.lang.IReduceInit coll conj! (transient #{})))
(persistent! (reduce1 conj! (transient #{}) coll)))))
persistent! transient with-meta ^clojure.lang.IReduceInit
я думаю пока рано да
ну да рано пока )
ладно. Спасибо )
> :static true народ, а чо это значит?
не то чтобы я все остальные слова понял, но интересует вот это одно)
я на гуглил вот что http://stackoverflow.com/questions/7552632/what-does-static-do-in-clojure
Кароче ничего)
а ну окай, спасибо
брейвкложуре для затравочки норм заходит, но как по мне надо какуюнить более основательную книгу прочитать, например programming clojure
А вот чего бы читать, когда знаком с тремя диалектами лиспа, пятью функциональными языками и двумя десятками императивных, clojure for brave and true уже пролистал, позёвывая, и нужно сесть и писать код для профита? Чтобы вот "библиотеки для того, библиотеки для этого, код класть сюда, собирать так, CI настраивать так, деплоить так, рефакторить вот такой шнягой к Emacs'у/Vim'у/whatever, линтер зовётся так, дебажить таким образом, а вот этот список фигни заброшен, его даже трогать не надо"
Почему бы и не поспрашивать в слаке
@dottedmag: а с какими диалектами лиспа вы знакомы? какие функциональные языки знаете? и зачем вам знать 20 императивных языков? Вы еще молодой на фотке Оо
@dottedmag: это кстати боль, пока не попробуешь все подряд, не узнаешь, что не надо юзать compojure, не надо юзать pedestal, и т.п.
@asolovyov: Вот сюрприз для меня. А что нужно юзать для веба?
@antonshwab: для маленьких приложений и compojure ок
вооо, расскажи про компожуру, я вчера пытался понять что мне взять для матчинга урлов (чисто бекенд), компожа на слуху, тока ее юзал, почитал про биди
https://github.com/niquola/route-map маленький и возможно немножко бажный
я бы выбирал просто "легко читать" + "структура данных", все эти функциемакросы из компожуры меня раздражают
>компожуры меня раздражают ха, я думал я один такой - посмотрел бегло его, макросы кие-то, чота дофега всего, плюнул и сделал руками по быстрому 2 эндпоинта
ну хз, вот пример niquola/route-map я сразу понимаю, мне даже в сорсы лезть не надо чтоб понять как она это делает
присоединяюсь к любителям route-map ^_^ я его выбрал сначала вместо какой-то штуки на клиенте, вроде secretary, но я не уверен
кстати про изучение кложуры когда уже и так дофега знаешь - https://www.4clojure.com мне вот это понравилось, сразу практика
аа не понял вопроса значит, сорян
>не практика best practices совсем а где такое взять?
я бы посмотрел
> Но ведь порядок не может быть случайным. Он наверное проходит по коллекции и сравнивает каждый элемент с остальными, чтобы оставить уникальные. Он что не попорядку идет? нет, не ходит 😉
> [4:05] ни интерсепторы, ни то, что к нему вебсокеты не прикрутишь, ни невнятные доки "не нравятся" и "не надо использовать" немного разные вещи )
(defn -match кто мне скажет зачем тут "-" ?
а чем отличается defn- name и defn -name
чота понял что ни разу не создавал приватные функции...
а кто-нибудь использует boot для больших проектов? кажется это то, что нужно если процесс сборки становится сложным.
@antonshwab: elisp, коммон и схема, ну и дальше.
@asolovyov: Да ваще, песок сыпется.
@rm, @kronos_vano почему (defn -hello) будет private? просто имя такое, обычная функция
Не знаю
я такое не говорил)
@prepor а как он работает? где почитать?
после braveclojure какую книгу посоветуте. Я нашел 3 книги для начинющих, все с хорошими отзывами и рейтингами, одна чуть больше остальных. Какую выбрать посоветуете? Вот книги: http://www.amazon.com/Living-Clojure-Carin-Meier/dp/1491909048?tag=duckduckgo-d-20 http://www.amazon.com/Clojure-Programming-Chas-Emerick/dp/1449394701?tag=duckduckgo-d-20 http://www.amazon.com/Programming-Clojure-Stuart-Halloway/dp/1934356867?tag=duckduckgo-d-20
Наверное нет смысла читать все книги одного уровня, поэтому хорошо бы одну выбрать)
@larhat: я был на митапе. ниочем, кроме комментариев @prepor, ну и про эрланг было чуть чуть смешно )
на митапе народу было слишком много, пиццу схавали до того, как я туда добрался. про эрланг было весело
про эрланг +1, и мне про elm интересно было - не смотрел на него раньше
@antonshwab: сеты устроены так же как и перзистентные мэпы, вектора, в основе хитрые деревья. основная база заложена вот этим https://books.google.com.br/books/about/Purely_Functional_Data_Structures.html?id=SxPzSTcTalAC&redir_esc=y&hl=en
@ssesutchenkov: не согласен с оптимизмом докладчика про элм ) в частности про роадмэп, вот последний топик про "где блин роадмэп", 10 января. https://groups.google.com/forum/#!searchin/elm-discuss/roadmap/elm-discuss/Kh3dImV4Xkg/DfrNfSb0BwAJ
"I am currently working through a much bigger idea that I'll share list-only at the appropriate time."
это все же язык одного человека, а вовсе не комьюнити. на сколько этот человек может затащить — посмотрим. пока не видно ни одного преимущества элма над окамлом, а недостатков полно.
а если чуваки допилят https://github.com/bloomberg/bucklescript, то ну прям ваще