Если целевая платформа у вас .net, то имеет смысл использовать nemerle. А у моно сейчас есть проблемы, например, в сборке под windows nunit 2.4.8 падает с ошибками.
Присоединяюсь к вопросу — создается впечатление, будто бы eval в C# не такое уж и абсолютное зло.
Мне кажется, если безопасность/надежность какая-либо нужна, то лучше всё-таки хотя бы проконтролировать формальной грамматикой выражение перед eval-ом (тогда не надо писать полноценный «интерпретатор» выражения).
Это точно, кроме того вы сами контролируете сборки, к которым имеет доступ этот опасный код, я еще до конца не разобрался, но думаю, что можно ограничить классы, к которым имеет доступ этот код, а если нельзя, то скорее всего в будущих версиях это ограничение появится.
Спасибо за интересный способ, позволяет несколько по-новому взглянуть на наш инструментарий ) Однако классические алгоритмы и умение их применять никто не отменял ) Тем более, если своя реализация может обеспечить более гибкий механизм для контроля каждой стадии анализа / вычисления. К примеру, в собственном парсере-велосипеде можно рулить как выражением в целом, так и отдельными его частями (например, оптимизировать выражение за счет предвычисления констант). В общем, проблема выбора между своей собственной разработкой и использованием готовых решений как всегда актуальна.
Вычисление выражений на Nemerle и Mono.