Собственно наткнулся на
сабж. Software Transactional Memory вещь довольно популярная в последнее время, но не помню чтобы речь шла о реализации её не на хаскеле.
Курилка wrote:
>
> PM>http://www.pps.jussieu.fr/~li/software/stmlib/doc/html/Stm.html
>
> А что смешного и зачем ты урл туда же дал?
Но урл же не совсем туда же, он на внутреннюю страницу, правильно
?
Просто решил поделиться тем, что показалось забавным/интересным, no
offense intended. Спасибо за ссылку, кстати.
Поясню: не могу оценить, но определенный процент читателей форума ссылку
не откроет, а только просмотрят обсуждение, сделают какие-то
поверхностные выводы. Иногда достаточно названия темы.
SPJ и другие на примере STM демонстрировали преимущества изоляции
сайд-эффектов в монадах. Увидев твое сообщение, некоторые подумают —
ерунда эти ваши монады, вон на Окамле STM без всяких монад сделали. Но,
если приглядеться, можно заметить:
1) сделали НЕ без монад
2) переложили часть проблем на программиста (см. retry_now, atom_once).
Надеюсь, мое сообщение не спровоцирует новый флейм.
Posted via RSDN NNTP Server 2.0
Здравствуйте, Курилка, Вы писали:
К>Собственно наткнулся на сабж. Software Transactional Memory вещь довольно популярная в последнее время, но не помню чтобы речь шла о реализации её не на хаскеле.
Самое смешное, что эта реализация использует монады. На первый взгляд, это порт оригинальной реализации STM на хаскеле:
http://www.pps.jussieu.fr/~li/software/stmlib/doc/html/Stm.html
val return : 'a -> 'a stm
Primitive to wrap a plain of type 'a value to a 'a stm, which when being executed, will produces the orignal value.
val bind : 'a stm -> ('a -> 'b stm) -> 'b stm
bind t f is a transaction, when executed, first behavior as transaction t, then feed the reture value to f to get the consecutive transaction to execute next.
val (>>=) : 'a stm -> ('a -> 'b stm) -> 'b stm
t >>= f is an alternative notation of bind t f
val (>>) : 'a stm -> 'b stm -> 'b stm
t1 >> t2 is equal to t1 >>= fun _ -> t2 which first execute t1 and wait for its result but ignore it, and then behaviors like t2
...
Здравствуйте, palm mute, Вы писали:
PM>Здравствуйте, Курилка, Вы писали:
К>>Собственно наткнулся на сабж. Software Transactional Memory вещь довольно популярная в последнее время, но не помню чтобы речь шла о реализации её не на хаскеле.
PM>Самое смешное, что эта реализация использует монады. На первый взгляд, это порт оригинальной реализации STM на хаскеле:
PM>http://www.pps.jussieu.fr/~li/software/stmlib/doc/html/Stm.html
А что смешного и зачем ты урл туда же дал?
Здравствуйте, Курилка, Вы писали:
К> Да и без монад можно обойтись,
Роза пахнет розой, хоть розой назови ее хоть нет. (с)
Можно процесс упрятывания сайд эффектов внутрь чегонить обозвать No-Side-Effect-Cool-Pattern,
или допустим Isolated Process Data Pattern(Привет Erlangу
) или Dirt Incapsulation. Суть то от этого не поменяется. Кто захочет — увидит в этом какую-то монаду. Кто захочет увидеть что-то другое — увидит что-то другое.
К> но умение разглядеть их в коде, имхо, даёт как минимум новую грань понимания происходящего.
Естествено увидишь когда монадные >>= , return никто даже не пытался спрятать
А по сути +1.
Вопрос остается о границах применимости этой новой грани понимания происходящего в мирных целях... А тут уж все от конкретного человека зависит.
"Если Вы отличаетесь от меня, то это ничуть мне не вредит — Вы делаете меня богаче". Экзюпери