Код Ревью

Сравни свои решения

    ;Разворот списка на месте,
;Т.к. в racket по умолчанию используется стратегия вычислений "вызов по значению", то изменения происходят в копии списка
;Т.е. исходный список не изменяется, но при этом возвращается измененный

(define (reverse! l)
  (define (loop i j)
    (if (null? i)
        j
        (let ([k (cdr i)])
          ;(set-cdr! i j) ;что-то ругается на это
          (loop k i))))
  (loop l null))

;Было:   v: [ 1 | & ] -> [ 2 | & ] -> [ 3 | \0] 
;Стало:  v: [ 1 | & ] -> [ 2 | & ] -> [ 3 | \0]   w: [ 3 | & ] -> [ 2 | & ] -> [ 1 | \0]
    ;Разворот списка на месте,
;Т.к. в racket по умолчанию используется стратегия вычислений "вызов по значению", то изменения происходят в копии списка
;Т.е. исходный список не изменяется, но при этом возвращается измененный

(define (reverse! l)
  (define (loop i j)
    (if (null? i)
        j
        (let ([k (cdr i)])
          ;(set-cdr! i j) ;что-то ругается на это
          (loop k i))))
  (loop l null))

;Было:   v: [ 1 | & ] -> [ 2 | & ] -> [ 3 | \0] 
;Стало:  v: [ 1 | & ] -> [ 2 | & ] -> [ 3 | \0]   w: [ 3 | & ] -> [ 2 | & ] -> [ 1 | \0]
    ;Разворот списка на месте,
;Т.к. в racket по умолчанию используется стратегия вычислений "вызов по значению", то изменения происходят в копии списка
;Т.е. исходный список не изменяется, но при этом возвращается измененный

(define (reverse! l)
  (define (loop i j)
    (if (null? i)
        j
        (let ([k (cdr i)])
          ;(set-cdr! i j) ;что-то ругается на это
          (loop k i))))
  (loop l null))

;Было:   v: [ 1 | & ] -> [ 2 | & ] -> [ 3 | \0] 
;Стало:  v: [ 1 | & ] -> [ 2 | & ] -> [ 3 | \0]   w: [ 3 | & ] -> [ 2 | & ] -> [ 1 | \0]
    ;Разворот списка на месте,
;Т.к. в racket по умолчанию используется стратегия вычислений "вызов по значению", то изменения происходят в копии списка
;Т.е. исходный список не изменяется, но при этом возвращается измененный

(define (reverse! l)
  (define (loop i j)
    (if (null? i)
        j
        (let ([k (cdr i)])
          ;(set-cdr! i j) ;что-то ругается на это
          (loop k i))))
  (loop l null))

;Было:   v: [ 1 | & ] -> [ 2 | & ] -> [ 3 | \0] 
;Стало:  v: [ 1 | & ] -> [ 2 | & ] -> [ 3 | \0]   w: [ 3 | & ] -> [ 2 | & ] -> [ 1 | \0]