This page is not created by, affiliated with, or supported by Slack Technologies, Inc.
2016-03-10
Channels
- # admin-announcements (2)
- # alda (16)
- # beginners (22)
- # boot (55)
- # cider (11)
- # cljs-dev (5)
- # cljsrn (7)
- # clojure (115)
- # clojure-art (1)
- # clojure-finland (3)
- # clojure-greece (18)
- # clojure-madison (2)
- # clojure-norway (2)
- # clojure-poland (50)
- # clojure-russia (122)
- # clojure-uk (9)
- # clojurescript (28)
- # core-async (7)
- # cursive (4)
- # data-science (4)
- # datomic (65)
- # devcards (3)
- # dirac (91)
- # editors (7)
- # emacs (9)
- # hoplon (1)
- # jobs (5)
- # jobs-discuss (10)
- # juxt (2)
- # keechma (7)
- # ldnclj (31)
- # leiningen (3)
- # off-topic (22)
- # om (129)
- # om-next (1)
- # onyx (6)
- # proton (15)
- # protorepl (2)
- # re-frame (49)
- # reagent (13)
- # remote-jobs (1)
- # ring-swagger (2)
- # yada (19)
дорогой чатик, f1 и f2 я все понимаю, но почему f3 такая зараза? Почему дефолтные параметры не эффектят :as алиас? Это ж не логично, или это не бага а фича?
>(defn f1 [{:keys [a b] :or {a 1 b 2} :as opts}] [a b])
>(defn f2 [{:keys [a b] :or {:a 1 :b 2} :as opts}] [a b])
>(defn f3 [{:keys [a b] :or {:a 1 :b 2} :as opts}] opts)
>(f1 {})
[1 2]
>(f2 {})
[nil ni]
>(f3 {})
{}
ой, забыл пофиксить, еще раз последний пример без кейвордов:
>(defn f3 [{:keys [a b] :or {a 1 b 2} :as opts}] opts)
>(f3 {})
{}
т.е. :or аффекит все что в :keys, но в :as остаются тока оригинальные параметры
хм, т.е. не бага, а фича, ну ок
спасибо
In addition, and optionally, an :as key in the binding form followed by a symbol will cause that symbol to be bound to the entire init-expr.
init-expr понял да, не внимательно читал видать
Привет опять. Прошел koans, думаю за 4clojure взяться. Все нравится. А зашел вот на codeeval -- по последней статистике clojure единственный из попавших в двадцатку языков, который за последние три года подряд снижает популярность.. обидно и непонятно. http://blog.codeeval.com/codeevalblog/2016/2/2/most-popular-coding-languages-of-2016
Ну ясно что не показатель. Это я так, "здравствуйте". А вот критику языка от профи почитал бы с удовольствием
Вот недавно смотрел https://www.google.com/trends/explore#q=clojure%2C%20clojurescript&cmpt=q&tz=Etc%2FGMT-2
Хм, вроде есть понижение да. Хотя странно, я всего года полтора с Clojure(Script) и мне кажется чем дальше тем его больше
у меня пока дискомфорт вызывают отдельные решения (вроде, семантического выбора векторов вместо листа, и разное поведение одной инструкции в зависимости от типа данных, вроде добавления в конец/в начало, при том что как я понимаю в основе деревья там и там) но списываю это на незнание деталей реализации. ок, это можно запомнить, не проблема. но я вообще не смог нагуглить сколь-нибудь объемного поста с обзором действительно недостатков язвка, так, отдельные дискуссии на google groups.
дак их нет 😄
скобочки осилил и можно жить. Не понравилось чо - написал макрос
@andmed: Ты кста про Clojure или ClojureScript? Или оба?
@artemyarulin: это и пугает, что их "нет"
скобочки
Если серьезно - нету типов, мы тут холиварили на эту тему, мол плохо это или хорошо, хз Слишком другой - народ боится пробовать ЛИСП
Тенденция в мире чистого JS - многое перетягивать из кложуры и функциональных языков - имутабельность, чистые функции. Многие задумываются, как я, а чего не писать стразу на нормальном функциональном языке. Тенденция явно есть, народ очен кложурой интересуется. А если завелся один в какой тусовке кложурщик, так все, это заразная болезнь. Так что мне кажется тут перспективы для Clojure очень хорошие.
Мне нравиться больше что кложура запрыгнула на поезд с JS и теперь я могу радостно прогать и на мобайле с реакт нейтивом. Не согласен тока что “это заразная болезнь”, нефига его не просто протащить на работе(
@artemyarulin: я думал у тебя на работе кложа, сопротивляются?
@artemyarulin типы есть, нет тайпчекер ;)
@larhat: Ну в прод я выпустил пару сервисов оно уже радует и посаппорчу их чутка, но “должен быть единый язык для всех беков и это будет го”. Не взлетело 😞
CSP + типы. У нас с ноды чуваки уходят, после ада с коллбеками, промисами и ЖС - го это прям небеса
Да я знаю, согласен. Но ГО на слуху, гугла все дела, кложуру знает полтора инвалида
@nicola: Вчера весь вечер копался в общей литературе по функциональному программированию, более всего понравилось Introduction Bird'a, его и возьму. И типы Окасаки
гугл кроме файлоотдатчика того, про который фицпатрик рассказывал, сделал что-нибудь? %)
Ну я дурак еще конечно - надо было продвигать, презенташки делать, про FP, immutable рассказывать, а у меня времени не было да и язык не из того места
ещё вот эта хорошая — http://funprog-ru.github.io
@andmed: Из всего по ФП самое лучшее что я читал это http://learnyouahaskell.com Реально, там совсем не сложно, но идею ФП можно отлично прочувстовать
@larhat: Нене, мой язык) Не умею рассказывать и убеждать
@andmed: Вот для меня еще было дофега полезным http://fsharpforfunandprofit.com, там просто кладезь информации
@larhat: @artemyarulin Спасибо
> в конец/в начало, при том что как я понимаю в основе деревья там и там @andmed: нет ) Как это ни удивительно, но списки в кложе это списки ) Благо они сами по себе уже иммутабельная перзистентная структура данных.
@prepor: А вот кста - у тебя не бывает проблем что начинаешь с векторов, потом где-нить внутри поменял на лист и conj уже делает не то? (conj [1 2 3] 10) ;; [1 2 3 10] (conj (take 3 [1 2 3]) 10) ;; (10 1 2 3)
ну вот я тоже не помню почему-то, странно. Выглядит как опасная штука, меня тоже сильно смутило по началу с кложурой это и не тока походу меня
нене, это уже вторая
а кто тут разбирается в го? Шансы были или AI рвет в клочья?
я читал кой-то анализ игры, ничо не понял вообще
> Lee Sedol was full of praise for AlphaGo, remarking that, “Yesterday I was surprised, but today, more than that, I’m quite speechless.” > He added, “. . . there was not a moment in time where I felt that I was leading the game.”
У Яна Бэнкса в "Player of Games" соревнования ограничены "baseline human and human-level AI", чтобы вообще интересно играть было :)
@prepor: а чисто гипотетически: два разных оператора prepend и append скажем не повысили бы читаемость, и эту, как ее юзабилити?
у тебя и так есть prepend (cons) и append (concat [a]). conj имеет свою семантику "вставь куда эффективнее" и, помимо использования как есть, используется еще и как базовый блок для into, например
интерфейс prepend и append, например, не поддержать для мапов и сетов. а conj — пожалуйста.
Кстати хороший вопрос. Я вот недавно for fun писал либу на js и сделал универсальные функции для eventstream, lazy sequence и нативных массивов. В итоге спросил в чатике по js, сказали что как то не айс иметь универсальные фукнции, непонятно из с чем работаешь в данный момент. А вы парни как считаете?
в clojure то как раз больше за универсальные интерфейсы
что простите?)
В языке для программистов, продолжительность концентрации внимания которых составляет пару секунд, это было бы полезно.
надо уточнить, что именно то полезно?
А то ведь сложно - перевёл взгляд с одной строчки на другую и забыл, с какой структурой данных работаешь.
ну ок, я понял намек)
@oxgrouby: а поподробнее
ну дык что подробнее -- это же основы, абстракция от конкретики, все дела. В тех же статически-типизированных джавах для этого дженерики, АДТ делают, а в динамике это из коробки, и вдруг -- "непонятно"
при отдельных prepend/append кроме семантически понятного поведения, мы имеем (имели бы) неявный контроль типов (при неподходящем типе данных выбрасывается эксепшн).
Что-то мне кажется на практике необходимость в этом возникает настолько редко, что эти случаи и так очевидны и можно в этих местах самому проверочки запилить
Типа вот этого https://github.com/ptaoussanis/truss
@andmed: в тему фп могу посоветовать https://drboolean.gitbooks.io/mostly-adequate-guide/content/index.html там все, начиная от чистых функций и каррирования, заканчивая монадками и функторами.
у меня пока не хватило времени сесть и намутить запросы на картинки разных размеров )
@larhat: из книги > I must mention that, just like with Object-Oriented code, you must be aware of this coming to bite you in the jugular. If an underlying function uses this and we call it first class, we are subject to this leaky abstraction's wrath. > I avoid using this like a dirty nappy. There's really no need when writing functional code. However, when interfacing with other libraries, you'll have to acquiesce to the mad world around us. про лямбда исчисление, извини, не понял.
ну нету ничего там про лямбда исчисление %( а про this — тупо использовать для обучения тухлый язык, кмк, с leaky abstractions