+(define (special? sym)
+ (eqv? (vector-ref (symbol-desc sym) 3) 1))
+
+(define (proclaim-special! sym)
+ (vector-set! (symbol-desc sym) 3 1)
+ #nil)
+
+(define (emacs! ref set boundp dref dset dboundp bind)
+ (set! symbol-value ref)
+ (set! set-symbol-value! set)
+ (set! symbol-bound? boundp)
+ (set! symbol-default-value dref)
+ (set! set-symbol-default-value! dset)
+ (set! symbol-default-bound? dboundp)
+ (set! bind-symbol bind)
+ (set! lexical-binding? (lambda () (symbol-value 'lexical-binding)))
+ (set! set-lexical-binding-mode (lambda (x) (set-symbol-value! 'lexical-binding x))))
+
+(define (eval-elisp form)
+ (eval (compile form #:from 'elisp #:to 'tree-il) (current-module)))
+
+(define (compile-elisp form)
+ (compile (compile form #:from 'elisp #:to 'bytecode)
+ #:from 'bytecode #:to 'value))
+
+(set-symbol-value! nil_ #nil)
+(set-symbol-value! t_ #t)
+
+(define (make-string s) s)
+