~ chicken-core (chicken-5) c4144fa2a6a15cffc947de3676671a44864f2070
commit c4144fa2a6a15cffc947de3676671a44864f2070 Author: felix <felix@call-with-current-continuation.org> AuthorDate: Sat Aug 20 03:28:05 2011 +0200 Commit: felix <felix@call-with-current-continuation.org> CommitDate: Sat Aug 20 03:28:05 2011 +0200 renamed mutate-procedure to mutate-procedure!; deprecated mutate-procedure diff --git a/lolevel.import.scm b/lolevel.import.scm index be76dd87..daf41c22 100644 --- a/lolevel.import.scm +++ b/lolevel.import.scm @@ -43,7 +43,8 @@ make-pointer-vector make-weak-locative move-memory! - mutate-procedure + mutate-procedure ; DEPRECATED + mutate-procedure! null-pointer null-pointer? number-of-bytes diff --git a/lolevel.scm b/lolevel.scm index d005c70d..bfeeac8d 100644 --- a/lolevel.scm +++ b/lolevel.scm @@ -616,15 +616,17 @@ EOF (##sys#check-become-alist alst 'object-become!) (##sys#become! alst) ) -(define (mutate-procedure old proc) - (##sys#check-closure old 'mutate-procedure) - (##sys#check-closure proc 'mutate-procedure) +(define (mutate-procedure! old proc) + (##sys#check-closure old 'mutate-procedure!) + (##sys#check-closure proc 'mutate-procedure!) (let* ([n (##sys#size old)] [words (##core#inline "C_words" n)] [new (##core#inline "C_copy_block" old (##sys#make-vector words))] ) (##sys#become! (list (cons old (proc new)))) new ) ) +(define mutate-procedure mutate-procedure!) ; DEPRECATED + ;;; pointer vectors diff --git a/manual/Unit lolevel b/manual/Unit lolevel index 9f13b3af..ad09a720 100644 --- a/manual/Unit lolevel +++ b/manual/Unit lolevel @@ -727,18 +727,18 @@ The effect of using {{object-become!}} on evicted data (see {{object-evict}}) is undefined. -==== mutate-procedure +==== mutate-procedure! -<procedure>(mutate-procedure OLD PROC)</procedure> +<procedure>(mutate-procedure! OLD PROC)</procedure> Replaces the procedure {{OLD}} with the result of calling the one-argument procedure {{PROC}}. {{PROC}} will receive a copy of {{OLD}} that will be -identical in behaviour to the result of {{PROC}}: +identical in behaviour to the result of {{OLD}}: <enscript highlight=scheme> ;;; Replace arbitrary procedure with tracing one: - (mutate-procedure my-proc + (mutate-procedure! my-proc (lambda (new) (lambda args (printf "~s called with arguments: ~s~%" new args)Trap