diff --git a/gash/arithmetic.scm b/gash/arithmetic.scm index 2d8ce0c..21fa4f5 100644 --- a/gash/arithmetic.scm +++ b/gash/arithmetic.scm @@ -21,6 +21,7 @@ #:use-module (ice-9 match) #:use-module (ice-9 receive) #:use-module (srfi srfi-1) + #:use-module (srfi srfi-14) #:use-module (srfi srfi-26) #:use-module (system base lalr) #:export (read-arithmetic)) diff --git a/gash/eval.scm b/gash/eval.scm index 42457d5..1e33744 100644 --- a/gash/eval.scm +++ b/gash/eval.scm @@ -36,6 +36,17 @@ ;;; ;;; Code: +(cond-expand + (mes + (define (eval-arithmetic expr) + (eval `(begin (number->string ,expr)) + (current-environment)))) + (else + (define (eval-arithmetic expr) + (eval `(begin (use-modules (gash environment)) + (number->string ,expr)) + (interaction-environment))))) + (define eval-cmd-sub (make-parameter (lambda (exps) (throw 'eval-cmd-sub-unset)))) @@ -55,9 +66,8 @@ and arithmetic substitions." ((eval-cmd-sub) exps)) ((' word) (let* ((arithmetic (expand-word word #:output 'string)) - (expr `(begin (use-modules (gash environment)) - (number->string ,(read-arithmetic arithmetic))))) - (eval expr (interaction-environment)))) + (expr (read-arithmetic arithmetic))) + (eval-arithmetic expr))) ((' name) (parameter-ref name "")) ((' name default)