wisp
 
(Arne Babenhauserheide)
2017-10-24: add coffee work

add coffee work

diff --git a/examples/coffee.w b/examples/coffee.w
new file mode 100755
--- /dev/null
+++ b/examples/coffee.w
@@ -0,0 +1,41 @@
+#!/usr/bin/env sh
+# -*- wisp -*-
+guile -L $(dirname $(dirname $(realpath "$0"))) -c '(import (language wisp spec))'
+exec guile -L $(dirname $(dirname $(realpath "$0"))) --language=wisp -s "$0" "$@"
+; !#
+
+;;; coffee --- pseudo-code for work with coffee, based on flawed java-code on a cup
+
+import : ice-9 q
+         ice-9 pretty-print
+
+define-syntax-rule : sip x
+  set! x #f
+define-syntax-rule : pop x
+  let : : y : car x
+    set! x : cdr x
+    . y
+
+define* : work schedule
+    let*
+      : pot : prepare 'coffee
+        cup : serve pot
+      let proceed : : task : pop schedule
+          sip cup
+          execute task
+          when : not : done? schedule
+              when : empty? cup
+                  when : empty? pot
+                      set! pot : prepare 'coffee
+                  set! cup : serve pot
+              proceed : pop schedule
+
+define prepare list
+define serve car
+define execute pretty-print
+define done? null?
+define : empty? x
+    equal? #f x
+define schedule : iota 5
+
+work schedule