REBOL вопросы метапрограммирования - PullRequest
3 голосов
/ 08 марта 2011

Я очень новичок в REBOL (то есть вчера).

Я использую здесь термин «метапрограммирование», но я не уверен, что он точный.Во всяком случае, я пытаюсь понять, как REBOL может выполнять слова.Чтобы привести пример, вот некоторый код в TCL:

> # puts is the print command
> set x puts
> $x "hello world"
hello world

Я пробовал много разных способов сделать что-то подобное в REBOL, но не могу получить тот же эффект.Может кто-нибудь предложить несколько разных способов сделать это (если это возможно)?

Спасибо.

1 Ответ

7 голосов
/ 08 марта 2011

Вот несколько способов:

x: :print           ;; assign 'x to 'print
x "hello world"     ;; and execute it
hello world

blk: copy []               ;; create a block
append blk :print          ;; put 'print in it
do [blk/1 "hello world"]   ;; execute first entry in the block (which is 'print)
hello world

x: 'print                  ;; assign 'x to the value 'print
do x "hello world"         ;; execute the value contained in 'x (ie 'print)
hello world

x: "print"                ;; assign x to the string "print"
do load x "hello world"   ;; execute the value you get from evaluating 'x
hello world
...