将不正确列表转换为方案中正确列表的正确方法?
Correct way to convert an improper list to a proper list in scheme?
是否有内置方法可以将不正确的列表/对/点对转换为方案中的正确列表?感觉一定有,就是找不到。相反,我一直在使用以下内容。
(define (make-proper improper-list)
(if (proper-list? improper-list) improper-list
(if (pair? improper-list)
(cons (car improper-list)
(make-proper (cdr improper-list)))
(cons improper-list '()))))
; (make-proper '(1 2 3 . 4)) ;=> (1 2 3 4)
; (make-proper (cons 1 2)) ;=> (1 2)
是否有内置方法可以做到这一点?如果没有,有没有比我更好的解决方案?
是否有内置方法可以将不正确的列表/对/点对转换为方案中的正确列表?感觉一定有,就是找不到。相反,我一直在使用以下内容。
(define (make-proper improper-list)
(if (proper-list? improper-list) improper-list
(if (pair? improper-list)
(cons (car improper-list)
(make-proper (cdr improper-list)))
(cons improper-list '()))))
; (make-proper '(1 2 3 . 4)) ;=> (1 2 3 4)
; (make-proper (cons 1 2)) ;=> (1 2)
是否有内置方法可以做到这一点?如果没有,有没有比我更好的解决方案?