Как я могу построить блок! содержащие паренсы?
У меня есть блок слов, как [x y]
и я хочу сделать блок [x: (x) y: (y)]
Это не совсем работает:
>> b: [x y]
== [x y]
>> collect [foreach w b [keep to-set-word w keep to-paren w]]
== [x: x y: y]
1 ответ
Решение
keep
опирается на append
действие при сборе значения аргумента, поэтому paren!
Аргумент будет видеть добавленные все содержащиеся в них значения, а не всю пареную серию (так же, как и для любых других any-block!
тип). Чтобы добавить серию парен как одно значение, используйте keep/only
(который затем будет использовать append/only
внутри).
>> b: [x y]
== [x y]
>> collect [foreach w b [keep to-set-word w keep/only to-paren w]]
== [x: (x) y: (y)]