(elisp-eval . ,(mal-fn (lambda (string) (elisp-to-mal (eval (read (mal-value string)))))))
))
+
+(provide 'core)
(defun mal-func-macro-p (mal-func)
(aref (aref mal-func 1) 4))
+
+(provide 'func)
(if (not value)
(error "'%s' not found" key)
value)))
+
+(provide 'mal-env)
(lambda (item) (concat (car item) " " (cdr item)))
(nreverse pairs) " ")))
(concat "{" items "}"))))
+
+(provide 'printer)
;; assume anything else is a symbol
(mal-symbol (intern token))))
(signal 'end-of-token-stream nil))))
+
+(provide 'reader)
#!/bin/bash
-exec emacs -Q --batch --eval "(setq text-quoting-style 'straight)" --load $(dirname $0)/${STEP:-stepA_mal}.el "${@}"
+exec emacs -Q --batch -L $(dirname $0) --eval "(setq text-quoting-style 'straight)" --load $(dirname $0)/${STEP:-stepA_mal}.el "${@}"
-(defun load-relative (file)
- (let* ((current-file (or load-file-name buffer-file-name))
- (current-file-directory (file-name-directory current-file)))
- (load (expand-file-name file current-file-directory) nil t)))
-
-(load-relative "types.el")
-(load-relative "reader.el")
-(load-relative "printer.el")
+(require 'types)
+(require 'reader)
+(require 'printer)
(defun READ (input)
(read-str input))
-(defun load-relative (file)
- (let* ((current-file (or load-file-name buffer-file-name))
- (current-file-directory (file-name-directory current-file)))
- (load (expand-file-name file current-file-directory) nil t)))
-
-(load-relative "types.el")
-(load-relative "reader.el")
-(load-relative "printer.el")
+(require 'types)
+(require 'reader)
+(require 'printer)
(defvar repl-env (make-hash-table :test 'eq))
(puthash '+ (lambda (a b) (mal-number (+ (mal-value a) (mal-value b)))) repl-env)
-(defun load-relative (file)
- (let* ((current-file (or load-file-name buffer-file-name))
- (current-file-directory (file-name-directory current-file)))
- (load (expand-file-name file current-file-directory) nil t)))
-
-(load-relative "types.el")
-(load-relative "env.el")
-(load-relative "reader.el")
-(load-relative "printer.el")
+(require 'types)
+(require 'mal-env)
+(require 'reader)
+(require 'printer)
(defvar repl-env (mal-env))
(mal-env-set repl-env '+ (lambda (a b) (mal-number (+ (mal-value a) (mal-value b)))))
;; -*- lexical-binding: t; -*-
-(defun load-relative (file)
- (let* ((current-file (or load-file-name buffer-file-name))
- (current-file-directory (file-name-directory current-file)))
- (load (expand-file-name file current-file-directory) nil t)))
-
-(load-relative "types.el")
-(load-relative "env.el")
-(load-relative "reader.el")
-(load-relative "printer.el")
-(load-relative "core.el")
+(require 'types)
+(require 'mal-env)
+(require 'reader)
+(require 'printer)
+(require 'core)
(defvar repl-env (mal-env))
;; -*- lexical-binding: t; -*-
-(defun load-relative (file)
- (let* ((current-file (or load-file-name buffer-file-name))
- (current-file-directory (file-name-directory current-file)))
- (load (expand-file-name file current-file-directory) nil t)))
-
-(load-relative "types.el")
-(load-relative "env.el")
-(load-relative "func.el")
-(load-relative "reader.el")
-(load-relative "printer.el")
-(load-relative "core.el")
+(setq debug-on-error t)
+(require 'types)
+(require 'func)
+(require 'mal-env)
+(require 'reader)
+(require 'printer)
+(require 'core)
(defvar repl-env (mal-env))
;; -*- lexical-binding: t; -*-
-(defun load-relative (file)
- (let* ((current-file (or load-file-name buffer-file-name))
- (current-file-directory (file-name-directory current-file)))
- (load (expand-file-name file current-file-directory) nil t)))
-
-(load-relative "types.el")
-(load-relative "env.el")
-(load-relative "func.el")
-(load-relative "reader.el")
-(load-relative "printer.el")
-(load-relative "core.el")
+(require 'types)
+(require 'func)
+(require 'mal-env)
+(require 'reader)
+(require 'printer)
+(require 'core)
(defvar repl-env (mal-env))
;; -*- lexical-binding: t; -*-
-(defun load-relative (file)
- (let* ((current-file (or load-file-name buffer-file-name))
- (current-file-directory (file-name-directory current-file)))
- (load (expand-file-name file current-file-directory) nil t)))
-
-(load-relative "types.el")
-(load-relative "env.el")
-(load-relative "func.el")
-(load-relative "reader.el")
-(load-relative "printer.el")
-(load-relative "core.el")
+(require 'types)
+(require 'func)
+(require 'mal-env)
+(require 'reader)
+(require 'printer)
+(require 'core)
(defvar repl-env (mal-env))
;; -*- lexical-binding: t; -*-
-(defun load-relative (file)
- (let* ((current-file (or load-file-name buffer-file-name))
- (current-file-directory (file-name-directory current-file)))
- (load (expand-file-name file current-file-directory) nil t)))
-
-(load-relative "types.el")
-(load-relative "env.el")
-(load-relative "func.el")
-(load-relative "reader.el")
-(load-relative "printer.el")
-(load-relative "core.el")
+(require 'types)
+(require 'func)
+(require 'mal-env)
+(require 'reader)
+(require 'printer)
+(require 'core)
(defvar repl-env (mal-env))
;; -*- lexical-binding: t; -*-
-(defun load-relative (file)
- (let* ((current-file (or load-file-name buffer-file-name))
- (current-file-directory (file-name-directory current-file)))
- (load (expand-file-name file current-file-directory) nil t)))
-
-(load-relative "types.el")
-(load-relative "env.el")
-(load-relative "func.el")
-(load-relative "reader.el")
-(load-relative "printer.el")
-(load-relative "core.el")
+(require 'types)
+(require 'func)
+(require 'mal-env)
+(require 'reader)
+(require 'printer)
+(require 'core)
(defvar repl-env (mal-env))
;; -*- lexical-binding: t; -*-
-(defun load-relative (file)
- (let* ((current-file (or load-file-name buffer-file-name))
- (current-file-directory (file-name-directory current-file)))
- (load (expand-file-name file current-file-directory) nil t)))
-
-(load-relative "types.el")
-(load-relative "env.el")
-(load-relative "func.el")
-(load-relative "reader.el")
-(load-relative "printer.el")
-(load-relative "core.el")
+(require 'types)
+(require 'func)
+(require 'mal-env)
+(require 'reader)
+(require 'printer)
+(require 'core)
(defvar repl-env (mal-env))
(define-error 'unterminated-sequence "Unterminated token sequence" 'mal)
(define-error 'end-of-token-stream "End of token stream" 'mal)
(define-error 'mal-custom "Custom error" 'mal)
+
+(provide 'types)