This page is not created by, affiliated with, or supported by Slack Technologies, Inc.
2017-06-29
Channels
- # aws (6)
- # beginners (33)
- # bitcoin (2)
- # boot (22)
- # carry (2)
- # cider (5)
- # clara (21)
- # cljs-dev (115)
- # cljsrn (40)
- # clojure (161)
- # clojure-dev (73)
- # clojure-italy (38)
- # clojure-russia (88)
- # clojure-spec (123)
- # clojure-uk (58)
- # clojurescript (88)
- # core-async (26)
- # cursive (5)
- # datascript (18)
- # datomic (26)
- # hoplon (50)
- # java (2)
- # jobs (1)
- # leiningen (10)
- # lumo (1)
- # off-topic (18)
- # om (9)
- # onyx (26)
- # parinfer (13)
- # pedestal (41)
- # quil (1)
- # re-frame (27)
- # reagent (21)
- # ring-swagger (11)
- # slack-help (3)
- # spacemacs (8)
- # specter (5)
- # sql (42)
- # timbre (1)
- # uncomplicate (7)
- # untangled (3)
- # videos (1)
- # yada (26)
Есть функция parse-data
которая парсит json файл и возвращает структуру, как можно сделать (def data (parse-data))
чтобы определялось во время компиляции? Я сделал так:
(defmacro def-data []
(let [result (parse-data)]
`(def data '~result)))
(def-data)
можно как-то короче?т.е. ты хочешь инклуд по сути сделать?
ну норм, я бы только вынес def data
из самого макроса и возвращал данные оттуда тока. А в коде уже делал бы (def data (do-macro-magic)
чтоб явно было, но это так, по мелочи
Я пытался, у меня не вышло) Там возвращается сложная вложенная структура с list-ами и они пытались вычислиться как функции
хм. а чо вообще кста не просто (def data (parse-data))
, зачем макро?
да я удивлен тоже)
может кто тут ответит почему 2 раза? я чота теряюсь
"It must execute each expression at compile time because Clojure has macros, so subsequent expressions may depend on it at compile-time."
я чота думал он инициализирует все при компиляции и так оставляет, про второй раз не знал, хотя пример с get-current-time
отлично показывает что оба раза надо да
(defmacro parse-data-compile-time []
`'~(parse-data))
(def data (parse-data-compile-time))
да дело привычки, там пару заклинаний типа
`'~
запомнить и окдаже если IO у тебя там?
ну (def a 42)
тоже все просто 🙂
как тебе Nim вообще? чо понравилось, чо нет?
Есть кста книжка про макросы на кложе https://pragprog.com/book/cjclojure/mastering-clojure-macros Она мелкая, зато сразу все понятно становится
@misha “ну чоты, нормально же общались“(с)
ууу @ilevd счас тебе расскажут что кложура уже готова, ничего добовлять не надо, а если надо то ты сам макросы, блаблабла 😄
@artemyarulin опередил :)
а вот про contains? не смешно было
@misha на кложакапе кста чо сделали в итоге?
ааа, я не знал что ты там был. Или просто забыл, ну круто
https://github.com/clojure/clojure/pulse/monthly ээ, а Ричи там в гамаке просто ведь да? чота 0 комитов на месяц, в CLJS дак 117
@misha сейчас это попадет в индекс, потом другие будут тыкать этим. вот так слухи и рождаются
ну мне тут грили что гугл тренд это не показатель, вот теперь гитхаб пульс тоже нет, я даже уже теряюсь 😄
кстати недавно смотрел доклад, где народ убежал от ELM в сторону CLJS
зачетный доклад кста да ^^
@artemyarulin а что тебе от кложи нужно? на мой взгляд, там уже все есть. нужно только ускорить запуск, над performance поработать и спеку зарелизить
Типчики хочу! нет, не то… интероп не через жопу в CLJS!! а неа, Array.prototype.find(predicate) было б здорово 🙂
ну тут как со спекой - до того как Ричи ее придумал я и не знал что ее очень хочу. Теперь на других языках эту идею даже юзаю
(first (filter))
@ilevd это по поводу нововведений в cljs, ускоряющих перформанс?
если честно, то это все тянет на один раз написать функцию самому. на core языка это никак не влияет
Дак уже обсуждали, что сам пишешь функцию, используешь один раз, а потом в другие проекты не тянешь
я так понял, что core team как раз занимается фундаментальными проблемами языка. а механизм библиотек - это как раз userland, где кто во что горазд. уверен, у каждого из нас есть набор функций и макросов, которые мы из проекта в проект перетягиваем
оидна раз в кложар запулить
>это как раз userland, где кто во что горазд ну вот чот не уверен что эт прям так хорошо. С другой стороны конечно скала где все в ядре и ужосужос
ядро языка маленькое шустрое. библиотеку включил под конретные задачи, конкретного проекта. и все. нет ничего лишнего.
в другом проекте - другие задачи, другие либы.
и главное синтаксис устойчив как, от версии к версии в очень редких случаях что-то поломается
честно говоря, даже не знаю, что там еще можно развивать. только либы или портирование на другие рантаймы
с другой стороны вот на тойже гошечке core.async по сути в ядре. Соответсвенно все(!) либы их юзают. В кложа мире у кого коллбеки, у кого core.async (а я мож не хочу!), у кого feature, или промисы или упаси оспади continuation monads или вообще все синхронное
т.е. плюсы есть когда ядро предоставляет фичи всеж
так в этом же огромный плюс - выбрать именно то, что отвечает задаче. и не ждать следующего релиза языка, если багу надо подправить или реализовать новую функциональность в асинхронной теме.
а континюэшн монады это уже болезнь.
@artemyarulin manifold вам всем)
оо, я его юзал когда aleph использовал, но чота так и не дочитал что это оказывается враппер над всеми асинхронными конструкциями
в кафке появились транзакции: (start trx) ( send msg1) (send msg 2) (commit trx)
в кафке появилось exactly one гарантии
появился идемпотентный producer, то есть повторная отправка одних и тех же данных не дублирует данные в логе
и consumer теперь может читать или все или только закоммиченные сообщения
транзакции - 2 fase commit
оверхед на транзакции обещают 3-5% для 100ms транзакций, 1КБ сообщения
Эта вся вкуснота появилась 0.11.0.0 is the latest release.
А что за библиотека?
apache kafka
Подумал, речь о какой-то библиотеке, не о самой кафке