diff --git a/module/language/elisp/boot.el b/module/language/elisp/boot.el index d264c8370..78bf61dcf 100644 --- a/module/language/elisp/boot.el +++ b/module/language/elisp/boot.el @@ -117,12 +117,26 @@ #'(lambda () ,bodyform) #'(lambda () ,@unwindforms))) -(fset 'eval (@ (language elisp runtime subrs) eval)) -(fset' load (@ (language elisp runtime subrs) load)) - (defun throw (tag value) (funcall (@ (guile) throw) 'elisp-exception tag value)) +(defun eval (form) + (funcall (@ (system base compile) compile) + form + (funcall (@ (guile) symbol->keyword) 'from) + 'elisp + (funcall (@ (guile) symbol->keyword) 'to) + 'value)) + +(defun load (file) + (funcall (@ (system base compile) compile-file) + file + (funcall (@ (guile) symbol->keyword) 'from) + 'elisp + (funcall (@ (guile) symbol->keyword) 'to) + 'value) + t) + ;;; Equality predicates (fset 'eq (@ (guile) eq?)) diff --git a/module/language/elisp/runtime/subrs.scm b/module/language/elisp/runtime/subrs.scm index 7324af484..b2caf3653 100644 --- a/module/language/elisp/runtime/subrs.scm +++ b/module/language/elisp/runtime/subrs.scm @@ -22,9 +22,7 @@ (define-module (language elisp runtime subrs) #:use-module (language elisp runtime) #:use-module (system base compile) - #:export (apply - eval - load)) + #:export (apply)) ;;; Function calls. These must take care of special cases, like using ;;; symbols or raw lambda-lists as functions! @@ -41,12 +39,3 @@ func))) (else func)))) (prim apply (@ (guile) apply) real-func args))) - -;;; Miscellaneous. - -(define (eval form) - (compile form #:from 'elisp #:to 'value)) - -(define (load file) - (compile-file file #:from 'elisp #:to 'value) - #t)