Нет, в R6RS такого нет.Некоторые редкие реализации могут поддерживать что-то подобное, но в подавляющем большинстве (включая eval
в других языках!) Это невозможно сделать.
Причина этого проста: она нарушает компиляцию, поскольку приводит ксделать две функции различимыми на основе локальных имен, а в некоторых случаях также может запретить простую оптимизацию.Например, если есть что-то, что вы можете заполнить для своего ???
, тогда компилятору понадобятся две привязки, даже если их можно было бы оптимизировать.В тех редких случаях, когда это возможно, все, что используется в ???
(что в некоторых языках является просто использованием eval
), запускает другую компиляцию, которая отображает известные привязки в их значения.(Существует некоторое странное поведение, когда eval
упоминается буквально в коде JS в некоторых браузерах, что фактически является той же проблемой.)