;; -*- 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 'mal/types)
+(require 'mal/func)
+(require 'mal/env)
+(require 'mal/reader)
+(require 'mal/printer)
+(require 'mal/core)
(defvar repl-env (mal-env))
(defun EVAL (ast env)
(catch 'return
(while t
- (if (mal-list-p ast)
+ (if (and (mal-list-p ast) (mal-value ast))
(let* ((a (mal-value ast))
(a0 (car a))
(a0* (mal-value a0))