
Stanislav
28.07.2016
15:13:22
да она не решает

Vladimir
28.07.2016
15:13:27
и вообще функции высших порядков решают

Dmitry
28.07.2016
15:13:39
Ну это как посмотреть.. Я пока ещё не разобрался
Композицию тогда уж, эм.

Google

Vadim
28.07.2016
15:13:46
"Всё, что решается наследованием, решается и композицией"

Stanislav
28.07.2016
15:13:48
тоесть передаем в конструктор десяточек лямдб ?

Vladimir
28.07.2016
15:13:56
> конструктор
Конструктор чего?

Stanislav
28.07.2016
15:14:02
что тебя смущает ?

Vladimir
28.07.2016
15:14:03
одну лямбду. а она генерит ещё девять.

Stanislav
28.07.2016
15:14:05
чего-то

Dmitry
28.07.2016
15:14:06
как бы да, только конструктора нету)
тоесть передаем в конструктор десяточек лямдб ?

Vadim
28.07.2016
15:14:10
Нету в элексире конструкторов
Поведение и данные отдельно

Stanislav
28.07.2016
15:14:36
тоесть когда вы создаёте процесс или что там было это нельзя назвать констурктором ?

Vadim
28.07.2016
15:14:44
Это функция прежде всего

Google

Vladimir
28.07.2016
15:15:08
В Elixir нет конструкторов.

Vadim
28.07.2016
15:15:25
Т.е. spawn_link это явно не конструктор
Но он создает процесс

Stanislav
28.07.2016
15:15:38
всё правильно.
>to create an object.

Dmitry
28.07.2016
15:15:46
конструктор создаёт объект определённого класса. У этого объекта есть параметры и методы. Тут такого нету

Stanislav
28.07.2016
15:15:50
типы есть ? обьектов типов нет ?

Vadim
28.07.2016
15:16:04
Есть, но конструктор - это из ООП
Можно так же сказать тогда, что любая фабрика - конструктор
Но это не так

Stanislav
28.07.2016
15:16:26

Dmitry
28.07.2016
15:16:32
Объект подразумевает совмещение данных и операций над ними. Тут такого нету

Stanislav
28.07.2016
15:16:40
как нету ?

Dmitry
28.07.2016
15:16:57
мухи отдельно котлеты отдельно

Vadim
28.07.2016
15:16:58
Данные ОТДЕЛЬНО, поведение ОТДЕЛЬНО
Ты создаешь структуру с данными
И в !модуле! объявляешь функции для работы со структурой

Stanislav
28.07.2016
15:17:23
и пердолишь ей ген-сервер по кругу
ну фукнции и будут методами
просто это такой откат на двадцать лет назад когда надо руками связывать

Google

Vadim
28.07.2016
15:18:13
Нету в функциональщине методов
Это терминология ООП

Stanislav
28.07.2016
15:18:26
ок функции над данными

Dmitry
28.07.2016
15:18:41
Метод может быть у объекта. Если ты вызовешь один и тот же метод у разных объектов - получишь разное поведение.

Vadim
28.07.2016
15:19:11
И разделение это исключительно хорошо

Dmitry
28.07.2016
15:19:28
У метода есть что то типа this. А тут такого нету. Считай все функции статические

Stanislav
28.07.2016
15:20:18

Vadim
28.07.2016
15:20:34
Module.function(data)

Stanislav
28.07.2016
15:20:34
this это первый аргумент

Vadim
28.07.2016
15:20:40
Или data |> Module.function

Dmitry
28.07.2016
15:21:13
Отличие от сишки в том, что стейт у тебя иммутабельный. Нет смысла передавать this, потому что ты не можешь его изменить
правильно. и называется {module_name}_{method_name}. и первый агрумент это стейт. в сишке тоже это проходили и пришли к полноценным классам

Vadim
28.07.2016
15:21:23
Зато в ООП для этого костыли в виде методов расширения и fluent-синтаксиса

Stanislav
28.07.2016
15:22:04
но ваще-то я не про ооп в целом. меня волнует конкретно как в фп обходятся без наследвоания. ну тоесть это не тема для траления. это боль которую я ношу уже несколько лет

Vadim
28.07.2016
15:22:05
С пайпами можно сразу data |> Module.function1 |> Module.function2

Stanislav
28.07.2016
15:22:18
вот вы говорите композиция. окей

Vadim
28.07.2016
15:22:19
Композицией

Stanislav
28.07.2016
15:22:24
надо изучать

Vadim
28.07.2016
15:22:41
Конкретно в элексире это облегчается с помощью use

Google

Vladimir
28.07.2016
15:23:05

Stanislav
28.07.2016
15:23:13
не

Vladimir
28.07.2016
15:23:14

Vadim
28.07.2016
15:23:14
Там тоже композиция

Vladimir
28.07.2016
15:23:33
пацаны пацаны а вы конкурируете с гошечкой ?

Dmitry
28.07.2016
15:23:36
Есть ещё и полиморфизм - с помощью протоколов

Vadim
28.07.2016
15:23:42
И в питоне первый аргумент всегда self

Stanislav
28.07.2016
15:24:11
мне кажется это всё не то. тоесть Composition vs. Inheritance это конечно есть такой вид олимпиады но меня волнует наследование как уточнение под проект а не как делание из фигуры круга

Vadim
28.07.2016
15:24:44
Ну пример то приведи какой-нибудь

Dmitry
28.07.2016
15:24:58
Ты мыслишь объектно ориентированно
мне кажется это всё не то. тоесть Composition vs. Inheritance это конечно есть такой вид олимпиады но меня волнует наследование как уточнение под проект а не как делание из фигуры круга
Тут нету объектов, уточнять ничего не надо. Просто работаешь с данными и всё

Stanislav
28.07.2016
15:25:13
да. это моя слабость
ну а как же библиотечки

Vladimir
28.07.2016
15:25:31

Stanislav
28.07.2016
15:25:48
ну слабо конфигурируемо получается

Vadim
28.07.2016
15:25:54
Нормально там все
Если библиотека поддерживает конфигурацию, то эта конфигурация передается как данные в функции

Dmitry
28.07.2016
15:26:52
Ты думаешь: "есть крутая библиотека, но она слишком широка для моих задач. Когда такое попадается в сишке - я просто наследуюсь с уточнением - и всё работает. А тт наследования нету - беда"

Stanislav
28.07.2016
15:26:54
так вот короч. есть класс. вы его наследуете и доопределяете методы. которые например дают этому классу хендлер бд, описывают поведение в случае чего

Google

Vadim
28.07.2016
15:27:08
Просто берешь
И делаешь функцию
Для этой структуры

Stanislav
28.07.2016
15:27:26
и кто её будет вызывать ?

Dmitry
28.07.2016
15:27:42
Но тут то нету классов!
Ты просто после обработки данных библиотекой пишешь функцию, которая ещё раз дообрабатывает их и всё!
Ты думаешь: "есть крутая библиотека, но она слишком широка для моих задач. Когда такое попадается в сишке - я просто наследуюсь с уточнением - и всё работает. А тт наследования нету - беда"

Vadim
28.07.2016
15:27:52
В таком случае передаешь функцию в какую-нибудь другую, которая определена в библиотека
Если библиотека это поддерживает

Stanislav
28.07.2016
15:28:07

Vadim
28.07.2016
15:28:20

Stanislav
28.07.2016
15:28:29
ну получается лапша из колбеков

Dmitry
28.07.2016
15:28:34
тогда в библиотеке будет хуки, или это плохая библиотека
а если надо обработать между внутренними обработками ?

Vadim
28.07.2016
15:28:38
Или используешь низкоуровневые методы
Если либа поддерживает

Stanislav
28.07.2016
15:29:16

Vadim
28.07.2016
15:29:38

Dmitry
28.07.2016
15:29:40
тут же чуваки не тупые сидят - почти во всех либах всё высокоуровневое с применением ТВОИХ лямбд. А там пилишь что хочешь, и уточняешь что хочешь
тогда в библиотеке будет хуки, или это плохая библиотека

Stanislav
28.07.2016
15:30:15
ну звучит ок но надо конечно конкретно смотреть как че реализовали да
вроде от языка кверения бд вытекали глаза но это было давно

Vadim
28.07.2016
15:30:57
https://github.com/elixir-ecto/ecto