Pipeline оператор, вести с полей
Константин Пальчик
Привет! Хочу поделиться горячей сводкой новостей про pipeline оператор.
Недавно состоялось очередное "заседание" TC39, где в частности обсуждали это многострадальное добавление к языку.
Напомню, pipeline оператор нужен для того чтобы "перевернуть" выражения вроде foo(bar(42)) во что-то вроде 42 |> foo |> bar
Изначально оператор запрашивало functional programming комьюнити, т.к pipe`инг — это довольно популярный подход в FP языках и подошёл бы для использования со многими FP библиотеками (сейчас они реализуют свои имплементации `pipe функции). Оператор тогда выглядел как F# style ниже. Но потом появились новые вариации оператора с несколько другим уклоном. Было очень много споров и разговоров о том что и почему лучше.
Так, до сентябрьского заседания было два основных конкурирующих варианта реализации:
F# style
здесь опускается явный вызов функции, каждый шаг пайпа — это функция, принимающая одно значение (текущий объект пайпа)

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