Fork me on GitHub
#clojure-russia
<
2016-03-22
>
andmed07:03:01

заработало везде и сразу. ничего не менял/репл не перезагружал, мистика

rm08:03:55

это потому, что утро вечера мудренее :)

andmed10:03:09

кто работает с vim стэком -- какпри переходе по [Ctrl-D в fireplace (на definition) вернуться назад в редактируемый файл? и '' не работают

rm11:03:04

nnoremap <BS> <C-o> для удобства

delaguardo11:03:43

и как clojure с vim? нормально работает или есть сложности?

kronos_vano11:03:31

Я накину еще больше: а чем вим лучше емакса? Не для холивара ради

kronos_vano11:03:37

именно касательно кложи

andmed11:03:37

я его выбрал по двум причинам: готовый стек у Николы в гитхабе, плюс повод подтянуть vim (иногда девопствую). lightweight, но все надо настраивать. вот глюки выше у меня скорее всего были вызваны окружением -- сейчас поотключал плагинов, перезалил lein, работает.

rm11:03:57

нормально работает. Емакс не знаю, нет причин уходить с вима

artemyarulin11:03:59

ну cider емаксовый тоже вроде готовый стек. Можно переформулировать наверно - если знаешь вим, то какой профит от емакса для кложуры?

delaguardo11:03:30

у cider очень круто debugger сделан

delaguardo11:03:11

это наверно единственное что меня на емаксе держит

prepor11:03:07

@kronos_vano: ничем. нет вообще никакой причины использовать вим, а не имакс simple_smile

kronos_vano11:03:08

@prepor: если кто то пользовался вимом видимо не может слезти

kronos_vano11:03:41

я ни тем ни тем не пользовался мне емакс норм, правда некоторые вещи в саблайме проще у меня получаются, не могу к хоткеям привыкнуть

seryh11:03:57

у меня емакс не пошел, часто приходится прыгать между платформами win, osx, linux. чтоб создать мультиплатформенный конфиг там прям порог входа большой прям

seryh11:03:04

поэтому курсив юзаю

prepor11:03:05

если кто-то пользовался вимом просто ставит спейсмакс и продолжает пользоваться вимом )

seryh11:03:21

вот бы мультиплатформенныей емакс под jvm ^^

kronos_vano11:03:44

лайт тейбл помер?

prepor11:03:01

@seryh: во-первых он где то есть.

prepor11:03:53

или он его на кложескриптике все же пилил...

seryh11:03:40

плагины интересно туда ставятся

seryh11:03:47

если ставятся то круто

artemyarulin12:03:25

@delaguardo: Хм, прям дебаггер такой крутой? Я по старинке и думаю как большенство здесь юзать просто репл. А в чем крутость можешь сказать в двух словах?

delaguardo12:03:04

невероятно крутой) удобней не всречал, там надо один раз подебажить что-нибудь с рекурсивное что бы понять все прелести

artemyarulin12:03:20

а CLJS оно умеет?

delaguardo12:03:38

пока не пробовал

andfadeev12:03:15

есть где примеры как тесты пилить с component-ом, может кто видел чтонить полезное, а то у меня не складывается пока полная картина

andmed15:03:21

на кого посоветуете подписаться на 4clojure ?

rmuslimov16:03:52

@artemyarulin: cider debugger очень похож на родной elisp debugger, плюс с наворотами типа посмотреть в locals, eval, enlight полученных значений.

rmuslimov16:03:19

вообщем лучше 1 раз попробовать

rmuslimov16:03:11

вообще весь cider базируется на том как работает interaction с пользователем у самого емакса при разработке на elisp

rmuslimov16:03:12

сам по себе emacs это такой репл, а поверх него еще и clojure-репл - получается такой пулемет

lich17:03:31

или даже в таком виде: (test “1”) (test “2”) Или я нарушаю какие-то парадигмы?

delaguardo17:03:06

а что в итоге хочется получить если не seq?

lich17:03:49

это что-то вроде DSL для генерации xml. И там функции разнородные, но они должны быть на одном уровне. Я пишу, например:

(tests
  (test “1”)
  (test “2”)
  (rest “10”))
Сгенерируется xml
<tests><test>1</test><test>2</test><rest>10</rest></tests>

lich17:03:26

что делать, если я хочу вывести 100 test-ов и один rest?

kronos_vano17:03:48

повторить вызов функции 100 раз?

kronos_vano17:03:59

repeatedly есть

lich17:03:58

хм, не пользовался, сейчас посмотрю. но по сути здесь нужно что-то вроде map, но map завернет все в sequence, а мне это не нужно

rmuslimov17:03:01

- правильно поставленный вопрос половина ответа

rmuslimov17:03:20

есть repeatedly, есть (map test (range 100))

prepor17:03:29

Во-первых, тут можно просто писать

{:tag :test
   :attrs nil
   :content [s]}

prepor17:03:40

Точнее не можно, а скорее нужно

prepor17:03:57

Потому что {} вам в данном случае не хэшмэп создаст

prepor17:03:05

Во-вторых, я бы рекомендовал вам немного забыть про руби и желания сделать какие-то сложные дсл с макросами и т.п. Конкретно про такой дсл. Чем вас не устраивает подход hiccup?

lich17:03:08

да, вероятно, это была ошибка, использовать для этого функции

lich17:03:59

(defn test
  [s]
  {:tag :test
   :attrs nil
   :content [s]})

(defn tests
  [& xs]
  {:tag :test
   :attrs nil
   :content (vec xs)})

(tests
 (map test ["1" "2"])) 

=> 
{:tag :test,
 :attrs nil,
 :content
 [({:tag :test, :attrs nil, :content ["1"]} {:tag :test, :attrs nil, :content ["2"]})]}

lich17:03:41

вот хотелось бы как-то избавиться от круглых скобок

lich17:03:22

* там в функции tests должен быть :tag :tests, но не суть

lich17:03:25

вот нужно это:

(tests
 (test "1")
 (test "2”))

=>
{:tag :test,
 :attrs nil,
 :content
 [{:tag :test, :attrs nil, :content ["1"]} {:tag :test, :attrs nil, :content ["2"]}]}

rmuslimov17:03:13

apply vec вместо vec

rmuslimov17:03:27

все равно используйте hiccup

rmuslimov17:03:39

был правильный совет

delaguardo17:03:21

лучше поменять [& xs] на просто [xs]

delaguardo17:03:29

приходит то все равно один параметр

delaguardo17:03:39

и да, hiccup)

rmuslimov17:03:03

коллеги, если не сложно - посмотрите пож-та https://github.com/rmuslimov/cs-ex/blob/master/src/cs_ex/core.clj

rmuslimov17:03:15

я тут попробовал задачку решить

rmuslimov17:03:58

собственно если кто-то подскажет как “подкрутить” чтобы сделать код лучше

rmuslimov17:03:04

буду благодарен

lich17:03:02

хм, а apply vec не сработает для

(tests
 (test "1")
 (test "2"))
хотелось бы и то и другое поддержать

lich17:03:45

или например

(tests
  (test "1")
  (test "2")
  (rest "10"))

rmuslimov17:03:39

а ну да, apply vector

lich17:03:17

да, так работает, вот еще осталось поддержать

(tests
   (map test ["1" "2"])
   (rest "1"))

lich17:03:12

вообще спасибо огромное, буду переползать на hiccup, но не сразу. Тут была идея сделать что-то вроде dsl, так как результирующий xml слишком тяжеловесный.

rmuslimov17:03:44

если нужно воспринимать весь xs как flat list можно делать flatten

lich18:03:25

огромное спасибо, как раз додумался до этого!

andre19:03:46

может было, интересно про зипперы https://habrahabr.ru/post/279623/

gfv20:03:18

Привет. Я тут пописал конфиги для Riemann на кложуре, и понял, что мне это нравится. Есть ли какие-нибудь overview экосистемы clojure? Известные библиотеки, примеры, как нужно писать код и как не нужно, и так далее..

artemyarulin20:03:53

@gfv: можно начать с малого - стайл гайда типа https://github.com/bbatsov/clojure-style-guide

artemyarulin20:03:09

ну а вообще - наверно книжку прочитать, сложно ответить на такой общий вопрос. Ты спрашивай конкретно simple_smile

prepor21:03:04

Начинать со стайл гайда это минус вообще какой-то )

prepor21:03:47

@gfv: посмотри толки ричи хики. (https://changelog.com/rich-hickeys-greatest-hits/), посмотри датомик

artemyarulin21:03:47

а в чем минус?:) Как я понял чувак уже пишет на кложуре конфиги

prepor21:03:54

Потому что это ничего общего не имеет с "как нужно писать код и как не нужно, и так далее"

rmuslimov21:03:02

там есть книжки для начинающих типа "programming clojure"

abtv21:03:41

Я бы посоветовал начать с книги Living Clojure - там совсем основы, она читается и решается за неделю-две. Если ок, то да, тогда Programming Clojure.

prepor22:03:27

не понимаю зачем эти книжки. надо слушать ричи, что бы понять что и почему и проникнуться идеей, а сама кложа как ЯП учится по туториалу в 20 страниц aphyr'а

rmuslimov22:03:27

по-моему там вопрос был как начать код писать

rmuslimov22:03:52

собственно писать начать помогают такие туториалы

rmuslimov22:03:27

а ричи конечно надо слушать и читать, но это ответ на другой вопрос - “к чему стремиться, и как жить дальше"

artemyarulin22:03:58

кстати где Ричи? У него такие классные доклады, но я уже все пересмотрел, новое он вроде не снимает, в твиттор не пишет, в фейсбуке не лайкает 😞

gfv23:03:33

М-м.. меня интересуют не основы языка, а, скорее, идиомы, известные библиотеки и принятые подходы. Основы-то я как раз примерно понял за вечер с туториалом aphyr’а, ага 😃

gfv23:03:26

(Если что, я в детстве читал и решал SICP, ну и баловался всякой функциональщиной, S-выражениями меня не испугать)