2
#lang racket

要素とリストからペアを作成する必要があります

ただし、 を取得するときは(cons 2 (list 1 2 3))、ドットを(2 (1 2 3))取得(2 . (1 2 3)) するにはどうすればよいですか?

4

2 に答える 2

2

構造を説明する構文、格納方法、表現方法には違いがありますdisplay

2 つの要素のリストの場合、それを表す 2 つの方法(1)(1 . ()). このリストが表示されると、括弧が最も少ないリストが常に優先されます。したがって'(2 . (1 2 3))、常に(2 1 2 3)byとして出力されdisplayます。あなたがそれを望まない場合は、あなた自身をcons-write好きにすることができます:

;; displays cons always as dotted
(define (cons-write x)
  (if (pair? x)
      (begin
         (display "(")
         (cons-write (car x))
         (display " . ") ; spaces are important
         (cons-write (cdr x))
         (display ")"))
      (write x)))

(cons-write '(1 2 3 4)) ; prints (1 . (2 . (3 . (4 . ()))))
于 2015-04-06T20:02:16.100 に答える