Изменение сигнатуры/тела функции в КРАСНОМ

В RED мы можем определить функцию, используя переменные

Red [Title: "simple program"]

params: [myvar [integer!]]
body: [print [myvar]]
myfunc: function params body

myfunc 42 ; prints "42"

Вопрос: как я могу изменить сигнатуру или тело функции после?


red
person ts.    schedule 27.12.2014    source источник


Ответы (1)


Вы можете использовать spec-of и body-of для доступа к соответствующим блокам.

M: Function[a "test"][Print a]
Print mold Spec-of :m ; prints [a "test"]
Append Body-of :m 5
M 4 ; prints 4 returns 5

Для более интересных изменений вам, возможно, придется дождаться реализации привязки, чтобы получить доступ к словам в блоках.

person ingo    schedule 27.12.2014