From 0a1dd09b5e114d60bf7f196cd3a9dcb1ee18c1aa Mon Sep 17 00:00:00 2001 From: Peter Bex Date: Thu, 4 May 2017 22:03:02 +0200 Subject: [PATCH] Promote eval/meta to an official API and make chicken.eval official --- core.scm | 14 +++++++------- eval.scm | 21 +++++++++++++-------- manual/Unit eval | 6 ++++++ 3 files changed, 26 insertions(+), 15 deletions(-) diff --git a/core.scm b/core.scm index a46f281..3c41373 100644 --- a/core.scm +++ b/core.scm @@ -811,7 +811,7 @@ (car b) se (##sys#ensure-transformer - (##sys#eval/meta (cadr b)) + (eval/meta (cadr b)) (strip-syntax (car b))))) (cadr x) ) se) ) @@ -827,7 +827,7 @@ (car b) #f (##sys#ensure-transformer - (##sys#eval/meta (cadr b)) + (eval/meta (cadr b)) (strip-syntax (car b))))) (cadr x) ) ) (se2 (append ms se)) @@ -857,7 +857,7 @@ (##sys#extend-macro-environment name (##sys#current-environment) - (##sys#eval/meta body)) + (eval/meta body)) (walk (if ##sys#enable-runtime-macros `(##sys#extend-macro-environment @@ -881,7 +881,7 @@ (and body (##sys#cons (##sys#ensure-transformer - (##sys#eval/meta body) + (eval/meta body) (strip-syntax var)) (##sys#current-environment)))) (walk @@ -908,7 +908,7 @@ name (and (pair? (cdr b)) (cons (##sys#ensure-transformer - (##sys#eval/meta (cadr b)) + (eval/meta (cadr b)) (strip-syntax (car b))) se)) (##sys#get name '##compiler#compiler-syntax) ) ) ) @@ -1148,11 +1148,11 @@ ((##core#compiletimetoo ##core#elaborationtimetoo) (let ((exp (cadr x))) - (##sys#eval/meta exp) + (eval/meta exp) (walk exp e se dest #f h ln tl?) ) ) ((##core#compiletimeonly ##core#elaborationtimeonly) - (##sys#eval/meta (cadr x)) + (eval/meta (cadr x)) '(##core#undefined) ) ((##core#begin) diff --git a/eval.scm b/eval.scm index 2f3e64d..8770a5e 100644 --- a/eval.scm +++ b/eval.scm @@ -45,7 +45,9 @@ <# (module chicken.eval - (eval eval-handler + (eval eval-handler eval/meta + + ;; TODO: change to set! in scheme# module and remove export interaction-environment null-environment scheme-report-environment) ;; Exclude bindings defined within this module. @@ -458,7 +460,7 @@ (car b) se (##sys#ensure-transformer - (##sys#eval/meta (cadr b)) + (eval/meta (cadr b)) (strip-syntax (car b))))) (cadr x) ) se) ) ) @@ -472,7 +474,7 @@ (car b) #f (##sys#ensure-transformer - (##sys#eval/meta (cadr b)) + (eval/meta (cadr b)) (strip-syntax (car b))))) (cadr x) ) ) (se2 (append ms se)) ) @@ -496,7 +498,7 @@ (##sys#extend-macro-environment name (##sys#current-environment) - (##sys#eval/meta body)) + (eval/meta body)) (compile '(##core#undefined) e #f tf cntr se #f) ) ) ((##core#define-compiler-syntax) @@ -595,7 +597,7 @@ (compile exp e #f tf cntr se #f)))] [(##core#elaborationtimeonly ##core#elaborationtimetoo) ; <- Note this! - (##sys#eval/meta (cadr x)) + (eval/meta (cadr x)) (compile '(##core#undefined) e #f tf cntr se tl?) ] [(##core#compiletimetoo) @@ -707,7 +709,7 @@ ;;; evaluate in the macro-expansion/compile-time environment -(define (##sys#eval/meta form) +(define (eval/meta form) (let ((oldcm (##sys#current-module)) (oldme (##sys#macro-environment)) (oldce (##sys#current-environment)) @@ -871,8 +873,11 @@ (module chicken.load (dynamic-load-libraries - load load-extension load-library load-noisily load-relative load-verbose - provide provided? require set-dynamic-load-mode!) + load-extension load-library load-noisily load-relative load-verbose + provide provided? require set-dynamic-load-mode! + + ;; TODO: change to set! in scheme# module and remove export + load) (import (except scheme load) chicken chicken.foreign chicken.internal) diff --git a/manual/Unit eval b/manual/Unit eval index 25e863b..7095e57 100644 --- a/manual/Unit eval +++ b/manual/Unit eval @@ -178,6 +178,12 @@ Evaluates {{EXP}} and returns the result of the evaluation. The second argument and defaults to the value of {{(interaction-environment)}}. +(eval/meta EXP) + +Evaluates {{EXP}} in the "macro environment" and returns the result of +the evaluation. This is equivalent to {{(eval '(begin-for-syntax EXP))}}. + + --- Previous: [[Unit library]] -- 2.1.4