是否有内置方法将不正确的列表/对/点对转换为方案中的正确列表?我觉得必须有,我无法找到它。相反,我一直在使用以下内容。
(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)
有没有内置的方法来做到这一点?如果没有,是否有比我更好的解决方案?