[personal profile] sassa_nf
Вот есть у меня монада Console. Теперь среди нескольких операций над состоянием Console мне нужно выполнить что-то в IO. И чо? Теперь вместо (Console a) мне нужно везде делать (Console (IO a))? А потом как? (Console (IO (ST (RWS (IO (Console (... a)))?

Или чё, просто ReaderWriter всем раздать?

Date: 2012-11-29 05:28 am (UTC)
From: [identity profile] juan-gandhi.livejournal.com
О, вечная проблема некоммутирующих монад! Зефиров их любит.

Date: 2012-11-29 08:05 am (UTC)
From: [identity profile] sassa-nf.livejournal.com
Чё, уже? Что-то быстро я в них упёрся. Я что-то не так делаю?

Date: 2012-11-29 01:57 pm (UTC)
From: [identity profile] sassa-nf.livejournal.com
о, а ещё не слишком ли сумасшедшая идея - в конце произвольного вычисления сделать "tail call" в Cont, которому передать continuation из монады "уровнем выше".

Date: 2013-01-14 06:06 pm (UTC)
From: [identity profile] udpn.livejournal.com
Да не, так и должно быть.

Просто есть такая хорошая идея, брать каждую пачку из монад, которые нам нужны для некоторой цели, делать из неё трансформер и определять несколько примитивов. Например, State = Reader + Writer. С точки зрения шинковки семантики State не нужен вовсе.

Date: 2013-01-14 07:30 pm (UTC)
From: [identity profile] sassa-nf.livejournal.com
ага, понял, спасибо.

Profile

sassa_nf

February 2026

S M T W T F S
1234567
891011121314
15161718192021
222324252627 28

Style Credit

Expand Cut Tags

No cut tags
Page generated May. 22nd, 2026 07:03 am
Powered by Dreamwidth Studios