我需要帮助定义一个接受分区(列表列表)的Scheme函数,并返回表示等价关系的对列表。我已经开始编写一些代码,但我意识到我的方向是错误的。我已经看了好几个小时而没有任何进展。
(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)))
返回((3 3) (3 4) (4 3) (4 4) (5 5))
非常感谢任何帮助
答案 0 :(得分:0)
另一个例子会有所帮助。假设成员列表的所有元素彼此相同,这可能就足够了:
(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)))