Scheme 方案列表操作错误

Scheme 方案列表操作错误,scheme,racket,Scheme,Racket,我想列出多边形边的坐标。p1,p2是一些类似于(0)的点。 最终结果应该是((p1p2)(p2p3)(p3p4)(p4p5)(p5p6)(p6p1))。 我在这上面浪费了太多的时间,试图找出是什么给了我一个错误。为什么会出错。我做错了什么?这是我午餐休息时做的一些有趣的手指锻炼 (define (create-polygon ptlist) (if (null? ptlist) '() (cons (cons (car ptlist) (cadr ptlist)) (create

我想列出多边形边的坐标。p1,p2是一些类似于(0)的点。 最终结果应该是((p1p2)(p2p3)(p3p4)(p4p5)(p5p6)(p6p1))。
我在这上面浪费了太多的时间,试图找出是什么给了我一个错误。为什么会出错。我做错了什么?

这是我午餐休息时做的一些有趣的手指锻炼

(define (create-polygon ptlist)
  (if (null? ptlist) '()
      (cons (cons (car ptlist) (cadr ptlist)) (create-polygon (cdr ptlist)))))

(define (newlist ptlist)
  (append ptlist (car ptlist)))

(define test-points                   
  (list p1 p2 p3 p4 p5 p6))   

(create-polygon test-points)

我的
rotate
函数执行我认为您试图使用
newlist
函数执行的操作。在
create polygon
中,我使用了
map
高阶函数来执行递归操作。

您可以首先确定所指的错误。
Petite Chez Scheme Version 8.4
Copyright (c) 1985-2011 Cadence Research Systems

> (define test-points '(p1 p2 p3 p4 p5 p6))
> (define (rotate xs) (append (cdr xs) (list (car xs))))
> (define (create-polygon ptlist)
    (map list ptlist (rotate ptlist)))
> (create-polygon test-points)
((p1 p2) (p2 p3) (p3 p4) (p4 p5) (p5 p6) (p6 p1))