@proelixir

Страница 434 из 1045
Dmitry
17.03.2017
16:59:09
Если такой атом не валидный в эрланге - надо его в кавычки

: улучшает читабельность Если нет его, не понятно это переменная или просто атом

Alexey
17.03.2017
17:00:09
и вот в ерланг его надо '$end_of_table' писать

а в эликсире к нему еще слева двоеточие добавить

Google
Alexey
17.03.2017
17:00:53
ну. я не исключаю тот факт, что я тупой. но когда я переписывал свой код на ерланге в такой же на эликсир

Rafael
17.03.2017
17:01:14
Ответ: потому что создатель так сделал.
это самый тупой ответ из всех возможных как создатель, он может обосновать свое решение, да и должен это делать

Alexey
17.03.2017
17:01:32
то я далеко не с первого раза его смог написать так, чтобы он был именно атомом и соответствовал именно тому, чему должен быть в dets чтоб означать конец таблицы

: улучшает читабельность Если нет его, не понятно это переменная или просто атом
это растет из того, что в ерланге переменная всегда с большой буквы и по ней ясно, что это переменная. сразу. без всяких там двоеточий

ну а раз в эликсире сделали переменную с маленькой буквы, то пожалуйста. думайте теперь, как ее отличать от атома. и как переменную от функции.

Alexey
17.03.2017
17:03:36
адаптация моего мозга к атомам с : слева, потребовала примерно неделю

Rafael
17.03.2017
17:03:52
потому что нет привычки, что MaVal это переменная, а не какой-нибудь класс

Alexey
17.03.2017
17:04:31
зато таким как мне легче входить в язык
не. ну вот честно. сейчас. после работы с кодом эликсир, мне код на ерланге теперь не кажется каким-то непонятным или нелогичным. наоборот - понятнее и логичнее. и неоднозначностей меньше.

простой, как топор

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

Alexey
17.03.2017
17:05:50
название модуля

Google
Rafael
17.03.2017
17:06:06
Alexey
17.03.2017
17:08:26
он не с буквы, а с :

Rafael
17.03.2017
17:08:47


Alexey
17.03.2017
17:09:32
хм.. значит название модуля - тоже атом

видишь сколько тут годноты!

Rafael
17.03.2017
17:09:47
есть ли разница между == и === для не числовых типов?

Alexey
17.03.2017
17:10:03
а зачем тебе вот эти вот безчеловечные эксперименты?

хм.. значит название модуля - тоже атом
при этом не каждый атом - название модуля

Rafael
17.03.2017
17:10:21


Alexey
17.03.2017
17:10:28
может кто поправит

Alexey
17.03.2017
17:11:10
да. сегодня говорили про "даже если модуль еще не объявлен". будет всего лишь варнинг

Rafael
17.03.2017
17:11:19
Alexey
17.03.2017
17:11:56
ага. в германию не возьмут

shadowjack
17.03.2017
17:16:21
название модуля
Это просто атом

Rafael
17.03.2017
17:17:52
ассоциативные массивы построены на хештаблицах или на деревьях?

Alexey
17.03.2017
17:20:08
Это просто атом
но при это можно вот так вот: iex(1)> Module.concat(["ModuleName"]) ModuleName

Dmitry
17.03.2017
17:21:42
Rafael
17.03.2017
17:21:50
map

%{}

Google
Rafael
17.03.2017
17:22:34
%{}
к ним можно же добавлять новое значение как-то?

shadowjack
17.03.2017
17:22:36
но при это можно вот так вот: iex(1)> Module.concat(["ModuleName"]) ModuleName
Он для строк начинающихся с большой буквы просто в атом их преобразует

Dmitry
17.03.2017
17:23:07
map
HashArrayMappedTree

shadowjack
17.03.2017
17:23:08
Rafael
17.03.2017
17:23:31
но ведь это же дорого выходит

типо копирование всего обекта с добавлением пары ключ-значение

Dmitry
17.03.2017
17:24:44
Короче я не уверен в правильности того что я сказал, но insert и lookup за logN

Dmitry
17.03.2017
17:25:35
но ведь это же дорого выходит
Не дорого, потому что тут все иммутабельно

Dmitry
17.03.2017
17:26:12
Тут вообще ничего не копируется

Rafael
17.03.2017
17:27:05
Не дорого, потому что тут все иммутабельно
допустим у меня 1000 объектов в словаре этом, и я добавляю еще 1 элемент (кстати как это сделать?), то придется весь словарь копировать?

а все, все

туплю

сорян, попутал с кортежами

но вопрос про добавление новой пары ключ-значение все еще актуален

Dmitry
17.03.2017
17:29:39
a = %{} a = %{a | foo: :bar}

Google
Alexey
17.03.2017
17:29:58
фу таким быть

Rafael
17.03.2017
17:29:59


Alexey
17.03.2017
17:30:43
мапа это то, что %{}. без этого - оно не мапа

shadowjack
17.03.2017
17:31:09
iex(1)> "ModuleName" |> String.to_atom() :ModuleName
Хм. Concat добавляет Elixir. вперёд атома. Но он отличается чем-то от атома :"Elixir.ModuleName"

А нет не отличается

Анастасия
17.03.2017
17:32:52
a = %{} a = %{a | foo: :bar}
Это синтаксис замены

Dmitry
17.03.2017
17:33:03
Чтобы вставить - Map.put

shadowjack
17.03.2017
17:33:07
Короче если атом имеет форму :"Elixir.Aaaaa" то iex его выводит как Aaaaa

Dmitry
17.03.2017
17:33:23
Я что-то протупил)

shadowjack
17.03.2017
17:33:25
Правда здорово?

Admin
ERROR: S client not available

Alexey
17.03.2017
17:33:52
iex(3)> "Elixir.ModuleName" |> String.to_atom() ModuleName

пдзц. что мы теперь будем делать с этими знаниями? https://www.youtube.com/watch?v=zqEfa1S4sb0

Rafael
17.03.2017
17:37:59
Чтобы вставить - Map.put
только так можно больше никак?

Alexey
17.03.2017
17:38:14
еще можно Map.merge

Dmitry
17.03.2017
17:38:43
Так что норм

Alexey
17.03.2017
17:39:03
ну то есть атом - это атом. он начинается с : при этом, с большой буквы - это тоже атом нужно больше логики!

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

иначе, если программировать на эликсире так же, как на ерланге, то так и будешь ворчать, типа почему тут двоеточие, а f.() и прочее

Google
shadowjack
17.03.2017
17:43:42
Меня тут спрашивали про :do

Alexey
17.03.2017
17:44:29
не do: а именно :do?

shadowjack
17.03.2017
17:44:36
Отвечаю: if true, [{:do, 1}]

Да

Alexey
17.03.2017
17:45:13
а. ну тут да. логично. потом они скобки выкинули

shadowjack
17.03.2017
17:45:55
Да, это то же самое что if true, do: 1

Alexey
17.03.2017
17:46:37
Отвечаю: if true, [{:do, 1}]
а так кто-то пишет?

shadowjack
17.03.2017
17:47:58
Обычно конечно нет, но можно.

Alexey
17.03.2017
17:48:24
я вот видел if blabla, do: "одно", else: "другое"

Обычно конечно нет, но можно.
но чисто ради того, что можно, я бы не стал

if в одну строку - это как аналог a = (условие) ? "одно" : "другое"

shadowjack
17.03.2017
17:49:58
я вот видел if blabla, do: "одно", else: "другое"
И что? Это ж каноничная форма.

Alexey
17.03.2017
17:50:34
ну. я к тому, что не часто так пишу. вообще в коде if не часто

мы как-то глядели, во что компиляется if. занятно

shadowjack
17.03.2017
17:51:26
Вот лучше скажи как записать if true do x = 1 x*2 end в одну строку

Alexey
17.03.2017
17:52:22
непонятный пример. плз, поближе к реальности. мне так будет легче воспринять

shadowjack
17.03.2017
17:53:42
if a > 0 do t = a*a t + a end

Ну любой блок из нескольких выражений в if-e

Alexey
17.03.2017
17:54:22
а. ну то есть смысла в двух операциях нет. тут речь о том, что их в принципе должно быть две?

shadowjack
17.03.2017
17:54:34
Да

Про синтаксис же трем

Alexey
17.03.2017
17:54:44
ну вот в ерланге бы ты запятую поставил )

а тут скорее в pipe

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