2017-10-27 7 views
0
(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) 

多角形の座標のリストを作成しようとしています。 p1、p2は(0 0)のようないくつかの点です。 最終結果は((p1 p2)(p2 p3)(p3 p4)(p4 p5)(p5 p6)(p6 p1))でなければなりません。 私はこれで、私にエラーを与えていることを試してみるのに、これほど多くの時間を無駄にしました。そしてなぜそれはエラーを出すのですか。私はここで何が間違っていますか?スキームリスト操作エラー

+1

どのようなエラーを参照しているのかを特定することから始めることができます。 –

答えて

1

これは私の昼休みの楽しい指の運動でした。

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)) 

rotate機能は、私はあなたがあなたのnewlist機能をどうしようとしていた何を考えてい。 create-polygonでは、私はmap高次関数を使って再帰で何をしたのかを行いました。