
Alexey
25.12.2017
18:59:51
если просто мапа типа map = %{a: 1, b: 2, c: 3}
то матчиться на ключ значение, например b=2
some_func(%{:a => 2} = map), do: blablabla
а еще у тебя может быть определена структура. по сути тоже мапа. например %user{name: "Alex итд}
и можно матчиться еще на %user. то есть, туда обычная мапа, или структура типа %msg{...} туда не сматчится

Алекс
25.12.2017
19:02:47
Можете мне помочь мне надо вывести название и стоимость

Google

Алекс
25.12.2017
19:02:47
https://gist.github.com/anonymous/6f6dd85718b6ab6d45b90f6cac1629b8

Alexey
25.12.2017
19:03:38
омг

Evgeny
25.12.2017
21:41:47
я думаю, что нет, но вдруг есть какие-то фишки.

Alexey
25.12.2017
21:42:51
странные желания. если там числа - сделайте одну структуру. если строки - другую

Evgeny
25.12.2017
21:43:20
желания нет, я просто интересуюсь

Alexey
25.12.2017
21:43:24
ну либо пробуйте %{a: val} и дальше гард на тип val

Evgeny
25.12.2017
21:43:57
кстати да, гарды же есть, я про них забыл
вот, спасибо

Alexey
25.12.2017
21:44:41
там нюансы есть. не всё можно засунуть в гарды

Evgeny
25.12.2017
21:46:22
ага, я пока немного вперед заглядываю, еще не продумал реализацию, вот и интересуюсь
я, наверное, много вопросов задаю, иду на приз самому надоедливому новичку?

Alexey
25.12.2017
21:52:23
не. пока норм

Google

Alexander
26.12.2017
03:16:16
чтобы открыл файл, а там все по полочкам
это наверное расстройство психическое, когда хочется непонятного порядка

Kioshimafx
26.12.2017
03:59:17

Azat
26.12.2017
06:52:12
Парни, есть один проект на фениксе, там имеется код вида https://gist.github.com/azatmurtazin/cbebc77314387ef8aea05a71ab575f5f
как его можно переписать покрасивше?

Alex
26.12.2017
07:03:39
а он работает?

Le
26.12.2017
07:08:13

Alexander
26.12.2017
07:10:18
как-то так наверное, а методы check и создания просто внутри экто репо засунул с матчингом на структуру и проверку полей через where
от злоупотребления переносами строки у меня ощущение, что Го пишу. так что я за компатное написание =)

Azat
26.12.2017
07:13:09
спасибо)

Alexander
26.12.2017
07:15:00
можно вообще выкинуть весь этот код и просто в пайп validate в репо вписать 1 шаг
тогда просто на этапе валидации рекорда ченджсет вернет запись
можно описать структуру, где кейворды будут инструкциями вида where бла бла. Так к примеру plasm написан
короче говоря можно сотней способов написать, но "покрасивше" будет в зависимости от читаемости и отсутствия адовой дубликации кода.

Aldar
26.12.2017
08:39:34
если вся функция это case тоже можно отрефакторить через несколько функций и паттерн матчинг

Alexander
26.12.2017
08:40:04
да тут можно так отрефактирить, что комар носа не подточит
в эликсире мало светлых моментов, но какая-то безграничная вможность рефакторинга через паттернматчинг и структуры

Evgeny
26.12.2017
09:41:05
Слушайте, а эликсир неленивый язык? Если я применяю цепочку всяких обрабатывающих список функций, то на каждом шаге будет создаваться новый список?

Google

Maxim
26.12.2017
09:41:38

Andrey
26.12.2017
09:41:39
да

Dmitry
26.12.2017
09:41:44
А ещё есть генераторы
А дальше сам изучай

Evgeny
26.12.2017
09:42:14
Генераторы через for я вроде применяю как могу

Maxim
26.12.2017
09:42:15
(а еще есть хаскель)

Evgeny
26.12.2017
09:43:06
Ага, вот оно Stream
аналог Range из D
спс

Taras ?
26.12.2017
09:43:54

Evgeny
26.12.2017
09:44:35
хаскель слишком далек от реальности

Taras ?
26.12.2017
09:44:49
почему далек?

Evgeny
26.12.2017
09:44:54
или наоброт, слишком близок, смотря с какой стороны смотреть

Maxim
26.12.2017
09:50:14
хаскель на нормальном расстоянии от реальности
люди же юзают его в проде
и норм

Evgeny
26.12.2017
09:51:35
люди много чего юзают в проде, а для меня хаскель слишком строг

Maxim
26.12.2017
09:51:55
зато в рантайме ничего из-за типов не упадет

Evgeny
26.12.2017
09:52:02
и ленивость его, ЕМНИП, не идеальна и иногда приводит к SO

Google

Maxim
26.12.2017
09:53:05
так можно заэвалить в любой момент свой код

Evgeny
26.12.2017
09:55:14
да, но хаскель из-за этого можно завалить совершенно валидным кодом
в общем, мне ближе явная ленивость

Vladimir
26.12.2017
09:58:15
++

Evgeny
26.12.2017
10:06:24
А есть где-нибудь вменяемая конепция генераторов в эликсире.? А то у меня создалось впечатление, что это просто синтаксическая конструкция. Допустим и в for есть генераторы и в with вроде тоже генераторы, но они какие-то совершенно разные.

Dmitry
26.12.2017
10:18:55

Evgeny
26.12.2017
10:19:24
это я читал

Dmitry
26.12.2017
10:19:26
http://erlang.org/doc/programming_examples/list_comprehensions.html

Admin
ERROR: S client not available

Evgeny
26.12.2017
10:19:57
почему тогда выражения в with тоже называются генераторами? Они же не генерируют списки значений.
списковые включения я освоил

Dmitry
26.12.2017
10:21:01
Первый раз слышу что там генераторы
Но это называется comprehensions
Может все что с такой стрелочкой <- называется генератор

Evgeny
26.12.2017
10:24:15
вот цитата отсюда: https://elixirschool.com/en/lessons/basics/control-structures/#with

Dmitry
26.12.2017
10:24:27
В любом случае, надо понимать что for - это сахар для математики

Evgeny
26.12.2017
10:24:38
The special form with/1 is useful when you might use a nested case/2 statement or situations that cannot cleanly be piped together. The with/1 expression is composed of the keywords, the generators, and finally an expression.
We’ll discuss generators more in the list comprehensions lesson, but for now we only need to know they use pattern matching to compare the right side of the <- to the left.

Dmitry
26.12.2017
10:25:12
А with - костыль чтобы не делать railway error handling

Evgeny
26.12.2017
10:25:35
это я уже понял, но вполне нормальный такой костыль, мне нравится
это и есть по сути RH

Google

Evgeny
26.12.2017
10:26:22
только более гибкий чем макросы, которые я видел в интернетах
RH => REH :)

Dmitry
26.12.2017
10:29:00
Я бы конечно for не сделал бы так, потому что он выглядит как кусок императивного программирования, по сути являясь чуть ли не единственной математикой в эликсире
И в Эрланге как раз все с этим хорошо

Evgeny
26.12.2017
10:29:35
for да, немного сбивает с толку, но вроде это тоже функция
также как и всякие if, case
их же можно в одну строку со странным :do синтаксисом

Dmitry
26.12.2017
10:30:33
А with - это вообще одно из решений, засунутое в язык
И не лучшее из решений
Потому что позволяет писать многосложные функции, у которых потом проблемы с логгированием и тестированием

Evgeny
26.12.2017
10:32:25
хе-хе, как превратить ФП в ИП :)
потому что ФП по сути чуждо здравому смыслу
человек привык, что все в мире выполняется последовательно с течением времени
а тут ему волновые функции впаривают

Dmitry
26.12.2017
10:35:39
ФП можно рассматривать как «я говорю системе как должно быть, а она сама меняет своё состояние» вместо «я говорю системе что делать, и она меняет своё состояние» в императивном программировании нормально ложится на человеческую психологию
Проблема в том, чтобы иметь какой то план и его придерживаться

Evgeny
26.12.2017
10:37:23
в ФП функция не меняет состояния системы. Она возвращает новое измененное состояние. Вот где корень разрыва шаблона.
И начинаются всякие монады.
В императивном языке REH написать куда проще. В rust макрос ? изобрели, которым гораздо проще пользоваться, чем самописными макросами или тонной вложенных if/case в эликсире.