@proelixir

Страница 237 из 1045
Aldar
28.12.2016
15:23:48
все по разному инфу усваивают

Vadim
28.12.2016
15:23:57
хм, я вот думаю, внешне по эликсиру кажется, что с ним можно довольно удобно делать дслы всякие, мне правильно кажется? хочу наклепать очень узкоспециализированный кодогенератор для непогромистов (не спрашивайте меня зачем)

а это?
я как-то не дочитываю книги до конца, но первая сотня страниц обычно помогает мне составить более-менее видение "как у всех", чтобы уже дальше плясать и правильно понимать куда искать

Aldar
28.12.2016
15:24:42
кому то книги, кому то видосики

Google
Aldar
28.12.2016
15:24:50
а кому и мемасики

Alexander
28.12.2016
15:26:22
книги нужны

Rumata
28.12.2016
15:26:44
книги нужны
где в том что я сказал было о том что они не нужны?

Alexander
28.12.2016
15:27:07
> самому интересно не стремно это делать? заниматься хуитой

Aldar
28.12.2016
15:27:07
хотя у эликсира туториал отличный, а ежели чего непонятно есть доки

Rumata
28.12.2016
15:29:35
баклаша

Alexander
28.12.2016
15:29:51
оу, сорян, тут на личности говорят

пойду в пехепешный чатик

Rumata
28.12.2016
15:30:02
говна хавануть?

Alexander
28.12.2016
15:30:29
нет, культурно поговорить

Rumata
28.12.2016
15:30:29
я тебе говорю писать книгу в стиле Elixir 1.4 это дебилизим

Alexander
28.12.2016
15:30:50
а я говорю, что книги нужны

Google
Alexander
28.12.2016
15:31:04
без уточнения "только те, про которые Румата не говорит, что это дебилизм"

л — логика

redbeard
28.12.2016
15:32:31
Брежнев прикольнее целовался

redbeard
28.12.2016
15:44:48
нет

есть даже - о ужас! - КНИЖКА про метапрограммирование на эликсире

Vadim
28.12.2016
15:46:07
?

так, у меня назрело пара дилетантских вопросов, вероятно я хочу чего-то плохого, никого это тут сильно не испугает?)

первый и простой — как я понял mix escript.build собирает вполне себе такие стендэлон бинари?

второй и посложнее — хочу делать бинарь из первого вопроса и чтобы он искал в какой-нибудь папке все exs файлы и их выполнял, это нормальное/осуществимое желание?

хотя судя по mix test что-то подобное можно

abc
28.12.2016
17:15:18
первый и простой — как я понял mix escript.build собирает вполне себе такие стендэлон бинари?
нет. это тебе в golang. а тут будет An escript can run on any machine that has Erlang installed and by default does not require Elixir to be installed, as Elixir is embedded as part of the escript.

Dmytro
28.12.2016
17:27:03
ну, так как и с java и тд

Vadim
28.12.2016
19:53:22
ну на самом деле на "стенделонность" и прочую расовую верность мне крайне пофиг, лишь бы конечному пользователю было удобно, а еще ему иногда пофиг, а вот то, что мне реально нужно, походу это в Code.eval_file

Can
28.12.2016
19:58:37
это чет жоское

плохо так делать))

abc
28.12.2016
19:59:09
да eval в любом языке зло. а хотя нет, кроме лиспа

Vadim
28.12.2016
19:59:53
не, я думаю мне для "дсл для функциональных тестов для непогромистов" должно зайти :)

abc
28.12.2016
20:16:19
не знаю что за задумка. но функциональные тесты для не программистов пугают)

Vadim
28.12.2016
20:24:57
ага, самому страшно немного, но идея интересная и нам полезная :)

Google
Can
28.12.2016
20:25:02
dsl через макросы пишут нормальные люди

а не через eval

quote и unquote

тебе нужны

или если ты нормально хочешь запарсить просто какой-то файл то yecc и lecc парсеры

чаще всего когда человек пишет что ему нужен eval он делает что-то неправильно

но как бы

бывают исключения

это грубо говоря низкоуровневая системная функция языка

для каких-нибудь утилит и проч

клиентские приложения без eval пишутся

Vadim
28.12.2016
20:27:11
хм, посмотрю в ту сторону, но тут какое дело, есть отдельная папка, куда будут складываться тесты в отдельном файлике, ни количество, ни имена их неизвестны, но нужно все их выполнить по очереди или параллельно

Can
28.12.2016
20:27:26
да да это они иесть

https://habrahabr.ru/post/309382/

неизвестное количество файликов и неизвестные имена это решается через листинг директории

во всех языках это есть

Vadim
28.12.2016
20:28:29
угу, это накарябал

Can
28.12.2016
20:29:05
https://github.com/lowks/Radpath

вот чуть удобнее

для походов по директориям, создание симлинков и проч

Google
Vadim
28.12.2016
20:30:15
выглядит интересно, спасибо

Can
28.12.2016
20:34:04
Не за что) парсеры и компиляторы - пожалуй единственное что нормально в университете научили делать))

abc
28.12.2016
21:54:35
а нам сишарп в универе втирали. мы плакали и сдавали лабы на Scala (назло преподу )

Vadim
29.12.2016
07:45:32
так, мне нужен еще один ответ на очень дилетантский вопрос, чтобы навжухать прототип и получить заряд мотивации, а потом я честно пойду читать книгу по метапрограммированию :) есть вот такой гавнокод https://gist.github.com/Enapiuz/077841d976862519ad83e526a08da389 сейчас у меня проблемы с пониманием разделения compile time и runtime, но можете подсказать, как сейчас быстро склепать так, чтобы open делал то, что я от него хочу?)

Константин
29.12.2016
07:49:25
если я правильно понимаю - quote приостанавливает выполнение кода

т.е. quote do: 4 + 4 не вернет тебе 8

Admin
ERROR: S client not available

Константин
29.12.2016
07:50:55
iex(1)> quote do: 4 + 4 {:+, [context: Elixir, import: Kernel], [4, 4]}

Vadim
29.12.2016
07:51:44
хм, как же тут поступить

Rumata
29.12.2016
07:51:57
Молиться

Константин
29.12.2016
07:51:57
Дальше пробуем

iex(3)> test = quote do: 4+4 {:+, [context: Elixir, import: Kernel], [4, 4]} iex(4)> unquote test ** (CompileError) iex:4: unquote called outside quote

Т.е. unquote можно узать только в quote))))

Блин, я не помню как))))

давно с макросами имел дело

надо прочитать еще где-то

Vadim
29.12.2016
08:10:49
:)

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

как использовать макросы внутри макросов или около того

Константин
29.12.2016
08:17:24
defmodule ExSelenidePHP.DSL do require IEx def open(url) do "Opening #{url}" end defmacro test(name, do: action) do quote do """ <?php class #{unquote(name)} { function test#{unquote(name)} { #{unquote(action)} } } """ end end def test_it do test "FirstTest" do open "/profile" end end end

Google
Vadim
29.12.2016
08:18:27
ничего себе, ща пойду пробовать

Константин
29.12.2016
08:19:11
ExSelenidePHP.DSL.test_it() выдаст то, что нужно

Арбайтен?

iex(4)> test "EnatherName" do ...(4)> open "ssadsdasdasdsdasdasdasd" ...(4)> end "<?php\nclass EnatherName\n{\n function testEnatherName\n {\n Opening ssadsdasdasdsdasdasdasd\n }\n}\n"

Vadim
29.12.2016
08:22:54
так, наверное то, что я евалю тест из exs мне чему-то мешает

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

Константин
29.12.2016
08:27:58
ну вот у меня норм отрабатывает

Vadim
29.12.2016
08:31:32
вот такая штука https://github.com/Enapiuz/ExSelenidePHP там я делаю mix escript.build затем ./exselenidephp и оно евалит все из папки generators

заставить бы это щас работать, а дальше я замотивируюсь выше крыши :)

Константин
29.12.2016
08:39:31
А что ты хочешь вообще?)))

чтоб просто в консоли вывалились сообщения?

Vadim
29.12.2016
08:41:41
пока да, потом я хочу прикручивать генерилку сбоку, чтобы под чуть разные нужды можно было делать, ну и пихать все это в файлики

Константин
29.12.2016
08:49:13
Как бы тебе сказать...

dsl.ex ничего не выводит.

Там надо решить, как это лучше выводить

можно добавить IO.puts перед объявлением строки

Ты же хочешь увидеть вот это??

iex(2)> ExSelenidePHP.main Starting file 'generators/test.exs' <?php class FirstTest { function testFirstTest { Opening /profile } } Starting file 'generators/test2.exs' test :ok iex(3)>

Vadim
29.12.2016
08:51:35
да, зашибись, именно оно)

Страница 237 из 1045