title: Correct way to convert an improper list to a proper list in scheme?
body: <p>Is there a built-in way to convert an improper list / pair / dotted pair to a proper list in scheme? I feel like there must be, I just can't find it. Instead I've been using the following.</p>
  
  <pre class="lang-lisp prettyprint-override"><code>(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))  ;=&gt; (1 2 3 4)
  ; (make-proper (cons 1 2))    ;=&gt; (1 2)
  </code></pre>
  
  <p>Is there a built-in way to do this? If not, is there a better solution than mine?</p>