amarao: (Default)
[personal profile] amarao
Говорят, монадки уже не модны (ибо IRL крайне неудобны в использовании), а вместо них грядут ещё более головоломные effect handler'ы. Я попытался послушать про них, но там уровень, на котором не хватает базового бэкграунда, чтобы понимать punch line у докладчиков.

Если пересказать в режиме "мойша напел", то effect handler'ы - это обобщение теории типов на сайд-эффекты, в которых эксепшены (и прочие сайд-эффекты) описываются в рамках модели (видимо, уже не типов), и позволяют компилятору делать выводы относительно происходящего, а авторам кода - накладывать ограничения на то, что именно происходит. Они покрывают собой эксепшены, но не только, и являются обобщением понятия.

Всё остальное надо слушать не в моём исполнении.

А ещё, мне первый раз объяснили, что такое монады. И я первый раз понял.

Это не rust-код (т.к. Self не может иметь типопараметр), но суть передаёт.

trait Monad<A> {
fn flat_map<B>(self, f: fn(A) -> Self<B>) -> Self<B>;
fn new(a: A) -> Self<A>;
}

(отсюда: https://users.rust-lang.org/t/please-tell-me-yeet-is-not-a-thing-in-rust/84843/47)

Date: 2022-12-02 01:04 pm (UTC)
juan_gandhi: (Default)
From: [personal profile] juan_gandhi

Ну поздравляю!

Насчет же хендлеров - странно звучит. Мне кажется, что ZIO все это покрывает. Как и любая монада с частичными функциями в качестве Клайсли.

Date: 2022-12-02 03:23 pm (UTC)
yurikhan: (Default)
From: [personal profile] yurikhan

Монадка — это не только наличие методов return и (bind или flatmap). Это ещё немножко аксиом, которым они должны удовлетворять.

Date: 2022-12-04 09:34 pm (UTC)
From: [personal profile] permeakra
Монадки вполне удобны в использовании, они неудобны в сборке. Там нужно либо писать руками кастомную монадку для каждого набора эффектов, либо собирать из модулей-трансформеров и страдать, что общего метода композиции трансформеров не существует и для многих пар нужно писать кастомный код композиции. Т.е. к n трансформерам нужно n^2 бойлерплейта про их композицию.

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

Profile

amarao: (Default)
amarao

February 2026

S M T W T F S
123456 7
8910111213 14
15161718192021
22232425262728

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Feb. 26th, 2026 02:46 am
Powered by Dreamwidth Studios