方案等价关系

Scheme equivalence relation

我需要帮助来定义一个 Scheme 函数,该函数采用分区(列表列表)和 returns 表示等价关系的对列表。我已经开始编写一些代码,但我意识到我走错了方向。我已经看了好几个小时了,没有任何进展。

(define partition 
  (lambda (piv l p1 p2)
    (if (null? l) 
        (list p1 p2)
        (if (< (car l) piv)
            (partition piv (cdr l) (cons (car l) p1) p2)
            (partition piv (cdr l) p1 (cons (car l) p2))))))

但是,该函数需要以 (partition ’((3 4) (5))) return ((3 3) (3 4) (4 3) (4 4) (5 5))

的方式工作

如有任何帮助,我们将不胜感激

另一个例子会有所帮助。假设成员列表的所有元素彼此等效,这可能就足够了:

(define (partition lol) ; lol, list of lists
    (apply append
        (map
            (lambda (liszt)
                (apply append (map
                    (lambda (elem)
                        (map
                            (lambda (other)
                                (list elem other))
                            liszt))
                    liszt)))
            lol)))