2013-11-21 2 views
1

Rascal чувствует себя как функциональным, так и императивным. Он поддерживает присвоения. Но он также считается чистым. Поэтому я предполагаю, что такие функции, как присвоения, моделируются. Тогда какова императивная модель Rascal, путь Haskell через монады или Чистый путь через уникальность?Какова настоящая модель мошенника?

ответ

1

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

Даже с глобальными или сопоставимыми замыканиями, которые фиксируют местоположения стека, все присвоения являются значениями, но они являются реальными заданиями. I.o.w. нет монад, нет однозначности, просто накладываются прямые и прямые побочные эффекты, но нет сглаживания и мутации.

Что делает побочные эффекты в Java-коде в «безопасном» уязвимом месте, является то, что отправка/прием данных всегда осуществляется через (де) сериализацию неизменяемого значения, то есть вы действительно не можете получить ссылку на данные состояния в Rascal через Java (если вы не начнете кодирующая указатели с int или loc :-)

(*) вы можете создать форму наложения с помощью закрытия, но вы должны прыгать через несколько высоких обручи первых, чтобы сделать такую ​​вещь.

Смежные вопросы