; This is a version of the read-xeval-print loop that will first read from
; a selected file before entering the interactive loop.  Run the
; readfile-xeval-print function to load the xeval-tests.xl file when you're
; ready to handin your final results
;
; SEE ALSO: the file read-xeval-print.l
;
;
(defun readfile-xeval-print-loop ()
  (prog (infilename instream xexpr memory)
    (setq memory '())
    (read-line)
    (princ "Name of xeval test file: ")
    (setq infilename (read-line))
    (setq instream (open infilename))

    file-read-loop
	(setq xexpr (read instream nil 'eof))
	(cond ( (not (eq xexpr 'eof))
		(setq result (xeval xexpr memory))
		(print (car result))
		(setq memory (cadr result))
		(go file-read-loop) )
	)
    (terpri) (terpri)
    loop
	(princ "X>")
	(setq result (xeval (read) memory))
	(princ (car result))
	(setq memory (cadr result))
	(terpri)(terpri)
	(go loop)
  )
)