我刚刚开始涉足Factor。我想计算两个序列的笛卡尔积:
{ 1 2 3 }
{ 8 9 }
我想看的是一个序列序列:
{ { 1 8 } { 1 9 } { 2 8 } { 2 9 } { 3 8 } { 3 9 } }
当我使用
cartesian-product
单词时,会得到一个序列序列:{ { { 1 8 } { 1 9 } } { { 2 8 } { 2 9 } } { { 3 8 } { 3 9 } } }
我也尝试过
[ 2array ] cartesian-map
,但我得到了同样的东西。最后,我尝试了[ 2array ] cartesian-each
,但我将每对分别压入堆栈。至少它是平坦的,但我希望它们全部成一个阵列。我该怎么做呢?
最佳答案
我不确定是否有一个现有的库方法可以做到这一点(只是自己开始),但是您可以通过将cartesian-product
与append
和reduce
组成来实现:
--- Data stack:
{ "a" "b" "c" }
{ 1 2 3 4 }
( scratchpad ) cartesian-product { } [ append ] reduce .
{
{ "a" 1 }
{ "a" 2 }
{ "a" 3 }
{ "a" 4 }
{ "b" 1 }
{ "b" 2 }
{ "b" 3 }
{ "b" 4 }
{ "c" 1 }
{ "c" 2 }
{ "c" 3 }
{ "c" 4 }
}