Introductory Lisp Program for Reading a File of Numbers
Into a One Dimensional Array

;;LOAD TESTFILE.TXT


(defparameter *Count* 0)

(defun file-read (filename)
   (let ((myArray)   ;;local variables 
         (line)
        )
      (with-open-file (infile filename :direction :input)
         (read-line infile) ;;Skip over the first two lines
         (read-line infile) 
         (setf line (read-line infile))
         (setf *Count* (read infile))
         (format t "~a~%Count:~D~%" line *Count*)
         (setf myArray (make-array (list *Count*)))
         (dotimes (row *Count*)
             (setf (aref myArray row) (read infile))
         )
       )
    myArray ;;Return the array
   )
)

(defun file-write (file arrayname)
   (with-open-file (outfile file :direction :output
                                  :if-exists :supersede)
      (format outfile "Here's the file we just read:~%")
      (dotimes (row *Count*)
          (format outfile "~6D" (aref arrayname row))
              (if (= (rem row 5) 4) (terpri outfile))
      )
      (terpri outfile)
      (format outfile "And each value squared:~%")
      (dotimes (row *Count*)
         (format outfile "~10D" (sqr (aref arrayname row)))
      )
    )
)

(defun sqr (x)
  "Returns X squared."
  (* x x)
)

(defun test ()
    (let ((array)
         )
      (setf array (file-read "testfile.txt"))
      (print array)  ;;Prints out the array in Lisp format
      (file-write "newTestFile.txt" array)
    )
)

(test)   ;;This runs the program when you load it