В Rebol 3 есть новая реализация FUNCTION , которая позволяет по умолчанию автоматически связывать переменные с локальным контекстом.
Кажется, что FUNCTION имеет проблему с VALUE?test, поскольку он возвращает TRUE, даже если переменная еще не была установлена во время выполнения:
foo: function [] [
if value? 'bar [
print [{Before assignment, bar has a value, and it is} bar]
]
bar: 10
if value? 'bar [
print [{After assignment, bar has a value, and it is} bar]
]
]
Если вы вызываете FOO, вы получите:
Before assignment, bar has a value, and it is none
After assignment, bar has a value, and it is 10
Это не так, как FUNCработает (он только говорит, что BAR имеет значение после присваивания).Но тогда FUNC не делает переменные автоматически локальными.
Я нашел примитив FUNCS здесь, в библиотеке, созданной Ladislav Mecir.Чем он отличается и имеет ли он те же недостатки?
http://www.fm.vslib.cz/~ladislav/rebol/funcs.r