Pipeline оператор, вести с полей

Pipeline оператор, вести с полей

Константин Пальчик
Pipeline operator


Привет! Хочу поделиться горячей сводкой новостей про pipeline оператор.

Недавно состоялось очередное "заседание" TC39, где в частности обсуждали это многострадальное добавление к языку.

Напомню, pipeline оператор нужен для того чтобы "перевернуть" выражения вроде foo(bar(42)) во что-то вроде 42 |> foo |> bar

Изначально оператор запрашивало functional programming комьюнити, т.к pipe`инг — это довольно популярный подход в FP языках и подошёл бы для использования со многими FP библиотеками (сейчас они реализуют свои имплементации `pipe функции). Оператор тогда выглядел как F# style ниже. Но потом появились новые вариации оператора с несколько другим уклоном. Было очень много споров и разговоров о том что и почему лучше.


Так, до сентябрьского заседания было два основных конкурирующих варианта реализации:

F# style

здесь опускается явный вызов функции, каждый шаг пайпа — это функция, принимающая одно значение (текущий объект пайпа)


F# style of pipeline operator

Hack style

В этом подходе есть символ-плейсхолдер, явно указывающий где используется текущее значение (текущий объект пайпа)


Итак, проходит заседание и внезапно после этого TC39 обновляет репу с этим оператором, закрывает почти все issue с обсуждениями (50+), двигает Hack style на stage 2 и убирает F# style как возможный вариант развития. При этом аргументация комитета не ясна: заметки заседания ещё не публиковались.


Комьюнити это очень бурно и возмущённо обсуждает в твиттере (прим. https://twitter.com/BenLesh/status/1436890184449236994) и на github (за пару дней создали с десяток новых issue с 200+ комментами).


Почитать:

Ben Lesh (RxJS maintainer) написал хорошую статью, с обзором + - обоих вариантов https://benlesh.com/posts/tc39-pipeline-proposal-hack-vs-f-sharp/

Ну и, welcome to github issues hell https://github.com/tc39/proposal-pipeline-operator/issues



Report Page