Scheme 方案列表操作错误
我想列出多边形边的坐标。p1,p2是一些类似于(0)的点。 最终结果应该是((p1p2)(p2p3)(p3p4)(p4p5)(p5p6)(p6p1))。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
我在这上面浪费了太多的时间,试图找出是什么给了我一个错误。为什么会出错。我做错了什么?这是我午餐休息时做的一些有趣的手指锻炼
(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))