; Load

;;(trace load) ;; load-noisily

(load "SCM:format")

(for-each
  (lambda (fname)
    (load (string-append "SCM:Macros/" fname)) )

  (list
	"utils"
        "syntaxenv"
        "syntaxrules"
        "misc"
        "expand"
) )

;;(untrace load)

(define new-eval
   (lambda (form)
      (##eval-global (macro-expand form))))

(define (macro-load file)
  (call-with-input-file file
    (lambda (in)
      (let loop ( (form (read in)) )
                        	(if (eof-object? form)
                        	    file
                        	    (begin (new-eval form)
                        	           (loop (read in)))
) ) ) ) )


(define (test-repl)
  (let ( (prompt "syntax> ") )
    (newline)
    (display prompt)
    (let loop ( (exp (macro-expand (read))) )
        (display ";;Expansion=>") 
        (newline)
        (pp exp)
        (display ";;Result=>")
        (newline)
        (pp (##eval-global exp))
        (newline)
        (display prompt)
        (loop (macro-expand (read)))

) ) )


(format #t 
"type: (macro-expand '<exp>), (macro-load <file>), (new-eval '<exp>)~%~T or (test-repl)~%"
)

;;                         --- E O F ---                        ;;
