1

私はプログラミング言語コースを勉強しました.Schemeコードのこのバリアントをスライドに持っています:

; (listof any) -> (listof any[no-cons])

(define (remove-pairs l)
  (cond
    [(empty? l) '()]
    [else
      (let ([ans
              (if (cons? (first l))
                  (begin (free! (first l))
                         (remove-pairs (rest l)))
                  (cons (first l)
                        (remove-pairs (rest l))))])
       (free! l) ; <- this will break our tail recursion.
       ans)]))

コードで(free! l)は、末尾の再帰を中断します。この関数が何をするのかわかりません。意味がわかりません。

4

1 に答える 1