这不是REBOL特定的问题.你可以用任何语言回答它.
该REBOL语言支持被称为REBOL"方言"领域特定语言的创建说法.我为列表推导创建了这样一种方言,REBOL本身不支持这种方言.
列表推导需要一个好的笛卡尔积算法.
我已经使用元编程来解决这个问题,通过动态创建然后执行一系列嵌套foreach语句.它工作得很漂亮.但是,因为它是动态的,所以代码不是很易读.REBOL不能很好地进行递归.它迅速耗尽堆栈空间和崩溃.因此,递归解决方案是不可能的.
总之,如果可能的话,我想用可读的,非递归的"内联"算法替换我的元编程.解决方案可以使用任何语言,只要我可以在REBOL中重现它.(我可以阅读任何编程语言:C#,C,C++,Perl,Oz,Haskell,Erlang等等.)
我应该强调,这个算法需要支持任意数量的集合才能"加入",因为列表理解可能涉及任意数量的集合.