Size: a a a

2019 December 06

DF

Denis Fakhrtdinov in ErlangRus
640кб.джпг ведь.
источник

ML

Maksim Lapshin in ErlangRus
Alexander Beniaminov
добавлю в пользу второго, ценность такого подхода в  возможности подготовить список каррированных функций в зависимости от условий и потом выполнить их последовательно пайпом. Понятно, что за такое удобство приходится расплачиваться потерями в проихводительности
«удобство» — очень субьективный термин.

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

В этом плане руби вообще неудобен, а рельсы достаточно удобны.  Эрланг сильно удобен
источник

ML

Maksim Lapshin in ErlangRus
Denis Fakhrtdinov
640кб.джпг ведь.
а это тоже смешно.  Мы меряем трафик терабитами, но точно так же выкраиваем десятки килобайт, чтобы быстро открылось на девайсе с батарейкой
источник

V

Vladimir in ErlangRus
В OCaml, кстати, в библиотеке Core (расширенная замена стандартной либе, ее JaneStreet делает - наиболее известный бизнес-пользователь окэмла, книгу realworldocaml они написали) тоже поменяли местами по умолчанию, переопределив изначальный порядок в пользу удобства |> и вложенных вызовов (функция передается последней). Но там можно именованные аргументы передавать если что, поэтому каррирование работает. Двух зайцев положили)
источник

СИ

Сергей Иванов in ErlangRus
Maksim Lapshin
эликсировский подход тянется из руби, питона и ООП.

lists подход тянется из ФП с идеями о каррировании
как-то не уловил почему у erlang каррирование, а elixir ооп.  вроде ортогонально же. пайпы - прикольно (хотя сам elixir страшный)
источник

RP

Roman Pushkov in ErlangRus
тоже не совсем понял как каррирование должно влиять на порядок аргументов
источник

ŹR

Źmićer Rubinštejn in ErlangRus
Сергей Иванов
как-то не уловил почему у erlang каррирование, а elixir ооп.  вроде ортогонально же. пайпы - прикольно (хотя сам elixir страшный)
Ну типо есть такой паттерн в классической GoF, который называется Fluent по-моему. Смысл его в том, что все методы инстанса возвращают в конце this, те сам инстанс, в результате чего можно херачить пайп через точку. Конечно же к ООП это имеет опосредованное значение, ведь фактически это ФП концепция токена в пайпе
источник

PG

Pïg Grëënëst in ErlangRus
Эрланговский стиль записи имел бы смысл если можно было бы легко композить функции, типа как точкой в хаскеле
источник

N|

Naiλ Gibaev | The Red King in ErlangRus
Źmićer Rubinštejn
Ну типо есть такой паттерн в классической GoF, который называется Fluent по-моему. Смысл его в том, что все методы инстанса возвращают в конце this, те сам инстанс, в результате чего можно херачить пайп через точку. Конечно же к ООП это имеет опосредованное значение, ведь фактически это ФП концепция токена в пайпе
method chaining во многих языках
источник

N|

Naiλ Gibaev | The Red King in ErlangRus
или вообще builder паттерн)
источник

PG

Pïg Grëënëst in ErlangRus
Это, кстати, расстраивает в Эликсире, пайп есть, а композа нету
источник

ŹR

Źmićer Rubinštejn in ErlangRus
Roman Pushkov
тоже не совсем понял как каррирование должно влиять на порядок аргументов
map :: fn -> collection -> collection,

Тогда ты можешь сделать

Job1 = foldl(do_smth)
Job2 = filter(do_smth_else)

И потом загнать в начало коллекцию и закомпозировать все jobs

Если бы был другой порядок - так бы не получилось сделать
источник

СИ

Сергей Иванов in ErlangRus
Źmićer Rubinštejn
Ну типо есть такой паттерн в классической GoF, который называется Fluent по-моему. Смысл его в том, что все методы инстанса возвращают в конце this, те сам инстанс, в результате чего можно херачить пайп через точку. Конечно же к ООП это имеет опосредованное значение, ведь фактически это ФП концепция токена в пайпе
пайпы задолго до Gof появились же
источник

ŹR

Źmićer Rubinštejn in ErlangRus
Сергей Иванов
пайпы задолго до Gof появились же
Вот только не в ооп
источник

RP

Roman Pushkov in ErlangRus
Źmićer Rubinštejn
map :: fn -> collection -> collection,

Тогда ты можешь сделать

Job1 = foldl(do_smth)
Job2 = filter(do_smth_else)

И потом загнать в начало коллекцию и закомпозировать все jobs

Если бы был другой порядок - так бы не получилось сделать
резонно 👍
источник

ŹR

Źmićer Rubinštejn in ErlangRus
По-моему есть языки, где можно любой по порядку аргумент запечь, но гарантировать не могу
источник

V

Vladimir in ErlangRus
Źmićer Rubinštejn
По-моему есть языки, где можно любой по порядку аргумент запечь, но гарантировать не могу
ну вот ocaml как раз
источник

ŹR

Źmićer Rubinštejn in ErlangRus
Вроде бы в F# так можно тоже
источник

IG

Ivan Gunko in ErlangRus
Если уж заговорили об работе с коллекциями и композицией с каррированием, то тут у Clojure просто идеальный дизайн ИМХО, мне такого же в Эрланге (да и других языках) сильно не хватает.  И разные пайпы: thread first -> и thread last ->> там не зря. Если кратко,  то первый применим к функциям которые не меняют тип входной коллекции, а второй для тех кто входные коллекцию превращает в Sequence (типа list по Эрланговски)
источник

AG

Alexey Golda in ErlangRus
Есть ещё some->, some->>, cond->, cond->>, as->, ->, ->>
😉
источник