считай что оператор (>>=) конструирует замыкание, которое когда будет запущенно сначала вызывает левую часть. Потом вызывает правую часть, которая просто возвратит новое замыкание. И дальше управление будет передано ему. Это и будет хвостовая рекурсия, поскольку возвращается тот же объект-замыкание
Мой тебе совет. Возьми ocaml или lisp и реализуй свой монаду. Эти вопросы исчезнуть. У меня монада была реализована как замыкание. Насколько я помню IO реализованна так же.
Comments 22
Reply
Возможен тут меморилик? Нет? Почему нет?
Reply
Reply
У меня монада была реализована как замыкание. Насколько я помню IO реализованна так же.
Reply
Поэтому проблем не возникает. Обычно. ;)
Reply
Reply
Reply
Reply
Я добавил там кое-что по мотивам этого треда. ;)
Reply
Reply
Leave a comment