This page is not created by, affiliated with, or supported by Slack Technologies, Inc.
2015-07-21
Channels
- # admin-announcements (24)
- # beginners (80)
- # cider (18)
- # cljs-dev (12)
- # clojure (94)
- # clojure-berlin (15)
- # clojure-dev (10)
- # clojure-gamedev (3)
- # clojure-italy (38)
- # clojure-japan (4)
- # clojure-russia (109)
- # clojure-sg (1)
- # clojurescript (161)
- # code-reviews (29)
- # core-async (17)
- # datomic (20)
- # editors (14)
- # instaparse (17)
- # ldnclj (9)
- # off-topic (9)
- # om (2)
- # onyx (2)
- # re-frame (11)
- # reagent (46)
racktear: welcome!
А вот расскажите, как в clojure можно удобно герерировать список? Я имею ввиду аналог “loop” (http://www.gigamonkeys.com/book/loop-for-black-belts.html)
В common lisp есть удобная кляуза “collect”, которая позволяет добавить в результирующий список что-то
Я могу сделать процедурно, сделав биндинг при помощи let, и в for собирать туда данные
(map lambda (range 100))
если я правильно вас понял)
а так еще есть repeat и его производные
а у меня есть необходимость в результирующую коллекцию иногда по нескольку элементов вставлять
привет.
“взять исходный список и продублировать все четные элементы”
mapcat тут подойдет.
(mapcat #(if (even? %) [% %] [%]) (range 1 100))
в руби это просто синоним я к тому, что такие штуки еще редьюисть удобно. начинаешь с пустого вектора и в каждом шаге аппендишь либо нечетный, либо 2 четных.
вот как сделать процедурно - это понятно. у меня за 2 последних года мозг размяк, похоже
Вообще в common lisp было вот такое еще: https://common-lisp.net/project/iterate/doc/Introduction.html#Introduction
а пользовал кто boot для сборки?
сейчас подумываю свой апп c lein на boot перетащить. кода больше писать, но так намного удобнее таски описывать.
но бывают странные проблемы с ним. вот, например http://stackoverflow.com/questions/31129470/java-lang-illegalargumentexception-no-implementation-of-method-route-matches/31210894#31210894
если ты хочешь заинжектить какие-то дополнительные :resource-paths для какого-то таска, придется писать таск, который динамически реквайрит твой основной неймспейс после таска с путями, а main вызывать через ns-resolve. как-то так.
да вот под него то как раз все хорошо, меня больше смушают проблемы нэймспейсов, как бы плясок с бубном больше обычного не потребовалось
в целом, мне кажется, логично, что тебе в build.boot не нужен (require ‘[my-app.core]), потому что там могут быть таски (большинство), которым не нужен твой кор, и следовательно правильно реквайрить его только там, где будут вызываться методы оттуда. более того, я недавно видел в каком-то репо, как чуваки так же делают. бут развивается, думаю, это просто надо как-то стандартизировать. или сделать плагин для неймспейсов.
а, понял. я про ios спросил, потому что Девид Нолен как раз рассказывал про cljs под ios – https://github.com/omcljs/ambly может быть под мак это тоже как-то портируют, хотя я не представляю, насколько это возможно.
racktear: а что не так?
имакс на илиспе
Они используют electron: http://electron.atom.io
а вот ребята на CommonLisp сделали оринигальную вещь https://github.com/ceramic/ceramic Друзья, теоретически, такое возможно на Clojure?
что atom, что lighttable тормозят как черт знает что
и это, скорей всего, корни хромиума
ну врядли загнется, идеи там верные заложены
Кто-то мне рассказывал, что как раз немного не подрасчитали с философией и реализацией
У выражений иногда есть побочные эффекты и вычислять их на лету типа не самая лучшая идея
ну не, философию они взяли из emacs, а вот реализацию перетащили в хроимиум
тут то все и накрылось, (имхо, имхо)
я в основном про inline evalution, ну надеюсь обойдут это и компы помощнее станут через несколько лет
для слака это оправданно
)) и то верно)
а вот редактор завязывать на него… хреновая идея. имхо
ого, а пруф?
реализация ELisp и V8 это немного разные веши