将序列分解为词汇变量

时间:2019-04-01 20:19:54

标签: factor-lang

我有一个已知数目的元素的序列(来自pcre匹配),并希望将其映射到词法变量中。

我可能可以遍历序列并将每个元素放到堆栈上,然后:> ( a b c d ),但是有惯用的方法吗?

哦,我的序列有4个以上的元素,所以first4不会删减,尽管我显然可以在序列的一个子集上使用first4然后使用first3。 / p>

1 个答案:

答案 0 :(得分:0)

如果确定确实要执行此操作,则可以使用firstn中的quotations.generalizations

SYMBOLS: a b c d e f g h ;

[let
 { 1 2 3 4 5 6 7 8 }
 8 firstn :> ( a b c d e f g h )

 a b c d e f g h . . . . . . . .  ]

但这听起来是个坏主意。这很棘手,因为词法变量不是“真实”变量,所以编译器将它们转换为堆栈改组。这就是为什么它们不能与宏配合使用并且:>不能像普通单词一样被调用的原因。

如果您使用动态变量,则会更容易:

SYMBOLS: a b c d e f g h ;

 { 1 2 3 4 5 6 7 8 }
 { a b c d e f g h } [ set ] 2each

 { a b c d e f g h } [ get . ] each