(define (mutate-procedure old proc) (unless (##core#check (procedure? old)) (##sys#signal-hook #:type-error 'mutate-procedure "bad argument type - not a procedure" old)) (let* ((n (##sys#size old)) (words (##core#inline "C_words" n)) (y (##core#inline "C_copy_block" old (make-vector words))) ) (##sys#become! (list (cons old (proc y)))) y) )