about summary refs log tree commit diff stats
path: root/cfree-fall.lisp
diff options
context:
space:
mode:
Diffstat (limited to 'cfree-fall.lisp')
-rw-r--r--cfree-fall.lisp19
1 files changed, 19 insertions, 0 deletions
diff --git a/cfree-fall.lisp b/cfree-fall.lisp
new file mode 100644
index 0000000..412b082
--- /dev/null
+++ b/cfree-fall.lisp
@@ -0,0 +1,19 @@
+;; TODO: air resistance, terminal velocity
+(defconstant +G+ 9.81)
+(defvar *alt* 20000)
+(defvar *v* 0)
+(defun one-step ()
+  (setq *alt* (- *alt* *v*))
+  (setq *v* (+ *v* +G+))
+  (format *standard-output* "~A~%" *alt*))
+(defun my-main ()
+  (loop while (> *alt* 0)
+        do (one-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)))