TG Telegram Group & Channel
dd if=/dev/stuff of=/dev/tg | United States America (US)
Create: Update:

Болезненное, но очень верное наблюдение сделано в канале Lil Functor: https://hottg.com/lilfunctor/252.

Действительно, ФП в TS идет по пути мимикрии под хаскель, и зачастую такие попытки натянуть сову на глобус не только приводят к неэффективному коду, но и значительно повышают bus factor и время онбординга новых разработчиков.

Что с этим делать? Я склонен согласиться с Михаилом, что идиоматичный подход появится только спустя несколько лет экспериментов, а сейчас библиотеки для TS штормит — fp-ts копирует хаскель и пурсу, effect-ts/waveguide/qio слизывают дизайн zio. Effect-ts так вообще беззастенчиво копирует API zio 1:1, что приводит к появлению в коде кадавров вида:

const LiveEnv = RandGenLive["+++"](ConfigLive[">+>"](LoggerLive))

export const main = pipe(
randomGteHalf,
T.retry(Schedule.recurs(10)["&&"](Schedule.exponential(100))),
T.provideSomeLayer(LiveEnv)
)

Поскольку в нашем любимом языке для рисования снежинок в браузере нет возможности добавлять свои инфиксные функции (операторы), то возникает риторический вопрос в целесообразности бездумного копирования API zio. Поэтому, в частности, я не спешу с написанием статьи по effect-ts на хабр — мне кажется, что Майкл Арнальди слишком увлекся попытками сделать Scala из TS.

Болезненное, но очень верное наблюдение сделано в канале Lil Functor: https://hottg.com/lilfunctor/252.

Действительно, ФП в TS идет по пути мимикрии под хаскель, и зачастую такие попытки натянуть сову на глобус не только приводят к неэффективному коду, но и значительно повышают bus factor и время онбординга новых разработчиков.

Что с этим делать? Я склонен согласиться с Михаилом, что идиоматичный подход появится только спустя несколько лет экспериментов, а сейчас библиотеки для TS штормит — fp-ts копирует хаскель и пурсу, effect-ts/waveguide/qio слизывают дизайн zio. Effect-ts так вообще беззастенчиво копирует API zio 1:1, что приводит к появлению в коде кадавров вида:

const LiveEnv = RandGenLive["+++"](ConfigLive[">+>"](LoggerLive))

export const main = pipe(
randomGteHalf,
T.retry(Schedule.recurs(10)["&&"](Schedule.exponential(100))),
T.provideSomeLayer(LiveEnv)
)

Поскольку в нашем любимом языке для рисования снежинок в браузере нет возможности добавлять свои инфиксные функции (операторы), то возникает риторический вопрос в целесообразности бездумного копирования API zio. Поэтому, в частности, я не спешу с написанием статьи по effect-ts на хабр — мне кажется, что Майкл Арнальди слишком увлекся попытками сделать Scala из TS.


>>Click here to continue<<

dd if=/dev/stuff of=/dev/tg




Share with your best friend
VIEW MORE

United States America Popular Telegram Group (US)