0
リストからペアのリストを作成したいのですが、cdrは常に同じです。たとえば、(make-pair '(1 2 3 4 5))
は'((1.a)(2.a)(3.a)(4.a)(5.a))
を返します。ラケット。リストからペアのリストを作成する
これは私が開発しているコードですが、うまくいかず、デバッグ方法がわかりません。
(define (make-pair lst)
(if (null? (car lst))
'()
(cons ((car lst) ".a")
(make-pair (cdr lst)))))
ありがとうございます!
(define (make-pair lst)
(if (null? (car lst)) ; - the base case is when the list is null
'()
(cons ((car lst) ".a") ; - there's a missing cons
; - `a` appears to be a symbol, not a string
; - that's not how we create a dotted pair
; - the surrounding `()` are misplaced
(make-pair (cdr lst)))))
これが正しい方法である:より良い
(define (make-pair lst)
(if (null? lst)
'()
(cons (cons (car lst) 'a)
(make-pair (cdr lst)))))
あるいは、使用ビルトイン手順:
(define (make-pair lst)
(map (lambda (n) (cons n 'a))
lst))
いずれかの方法で