about summary refs log blame commit diff stats
path: root/free-fall.lsp
blob: 27dec8551072e9dc086b0deb9b02ba93ecbc268e (plain) (tree)


















                                                                                                    
;; TODO: air resistance, terminal velocity
(defconstant +G+ 9.81)
(defglobal *alt* 20000)
(defglobal *v* 0)
(defun step ()
   (setq *alt* (- *alt* *v*))
   (setq *v* (+ *v* +G+))
   (format (standard-output) "~A~%" *alt*))
(defun my-main ()
   (while (> *alt* 0)
	  (step)))

;;; And here's an example from GNAT:
(defun free-fall ()
   (format (standard-output) "Gravitational constant: ~A~%" +G+)
   (format (standard-output) "Twice that: ~A~%" (* 2 +G+))
   (let* ((time 10)
          (distance (* 0.5 +G+ (expt time 2))))
         (format (standard-output) "Distance travelled in 10 seconds of free fall: ~A~%" distance)))