我刚刚开始涉足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-productappendreduce组成来实现:

--- 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 }
}

10-08 09:42