racket - DrRacket 组合列表

标签 racket cartesian-product

我希望有人能指导我正确的方向: 我正在寻找两个在两个列表中生成所有可能的项目组合:
示例:
给定列表 '(symbol1 symbol2) 和 '(1 2),我希望生成:
(list (list 'symbol1 1) (list 'symbol1 2) (list 'symbol2 1)(list symbol2 2))

到目前为止我的代码是:

    (define (combiner list1 list2)
    (list
      (foldr (lambda (a b) (foldr (lambda (c d) (list a c)) empty list1)) empty list2)
      (foldr (lambda (a b) (foldr (lambda (c d) (list b d)) empty list1)) empty list2)))

这显然行不通,我尝试过的其他一些方法也行不通。我在处理两个列表上的隐式递归时遇到问题 - 有什么想法吗?

最佳答案

您在这里看到的是两个复杂参数的递归,section 17如何设计程序。如果您需要其他提示,我会告诉您这是三种情况中的哪一种。

关于racket - DrRacket 组合列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8190962/

相关文章:

path - Racket:如何检索运行文件的路径?

scheme - 如何在这里反转谓词?

python - Python 的 itertools.product() 的效率

python - 列表列表 : find combinations of elements

c++ - 将嵌套的 C 循环转换为单个 boost 索引?

keyboard-shortcuts - 用于 α 重命名的 DrRacket 键盘快捷键

scheme - LISP clause for and clause let ¿why?, making a programming language in racket using ragg

list - 方案:返回的三个虚线元素的列表异常返回(例如infix运算符?)

python - 将向量压缩成笛卡尔积

mysql - 了解 SQL 中的笛卡尔积