В следующем коде мы можем присвоить результат GET-WORD p через SET-WORD, а затем использовать его под новым именем:
p: :print
p [{Hello} {World}]
Но что, если вы используете КОМПОЗИЦИЮ и обнаруживаете такую ситуацию?
do compose [p: (:print)]
p [{Hello} {World}]
Это дает ошибку:
*** ERROR
** Script error: -unnamed- is missing its value argument
** Where: do
** Near: do compose [p: (:print)] p ["Hello" "World"]
Таким образом, это похоже на то, что значения функций в блоке «живы», когда их видят в интерпретаторе ... независимо от того, были ли они получены в качестве оценочного результата или нет. (Казалось бы, они должны быть инертными, если они не были извлечены или применены каким-либо образом, иначе такие назначения невозможны из КОМПОЗИЦИИ или подобного.)
Кажется, вам нужно процитировать Get-слово, например:
do compose [p: (quote :print)]
p [{Hello} {World}]
Это может помочь сделать p функцией печати. Но можно ли это сделать, не используя GET-WORD или что-то подобное в качестве прокси?