Как я могу построить блок! содержащие паренсы?

У меня есть блок слов, как [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)]
Другие вопросы по тегам