Как можно добиться синтаксиса ¨monadic for/yield¨ на Цейлоне, например. для батуминга, поскольку Цейлон не выполняет оптимизацию хвостовых вызовов. Синтаксис for/yield требует введения новых имен переменных, что невозможно с помощью синтаксиса типа Tree.Есть ли эквивалент синтаксиса monadic-for/yield scala в ceylon?
Каков наилучший способ моделирования работы Scala в/Ceylon?
Одним из решений является использование (типизированной) карты. Это немного похоже на создание внутреннего (типизированного) языка сценариев на основе таких карт, как Python.
Есть ли лучшее решение?
Я полностью согласен с тем, что рекурсия не нужна в цейлоне. Но это возможно. И это может привести к исключению stackoverflow, что противоречит трезвым усилиям, предпринятым для устранения большинства возможностей ошибок времени выполнения в цейлоне. С другой стороны, scala's for/yield полезно при написании разборчивого кода. Возьмем в качестве примера логический алгоритм унификации и подстановки или упрощенное сопоставление от одного к другому дереву.По моему мнению, было бы логичным следствием вашего ответа, чтобы полностью исключить прямую и непрямую рекурсию и рассматривать ее как ошибку, которая не является необходимой, а рискованной. – Michael
Конечно, я имею в виду, я согласен, что рекурсия хвоста будет приятной. Но мне кажется, что лучшее место для реализации будет в самой ВМ. Или, возможно, даже как независимый от языка пост-процессорный байт-код, поскольку проблема просто не кажется специфичной для языка. –