wisp
 
(Arne Babenhauserheide)
2014-02-11: now that we support curly braces, rewrite fibonacci to use curly

now that we support curly braces, rewrite fibonacci to use curly infix.

diff --git a/examples/fib.w b/examples/fib.w
--- a/examples/fib.w
+++ b/examples/fib.w
@@ -3,7 +3,7 @@
 
 ;; Fibonacci Functions
 
-define : fib n
+define : fibonacci n
     . "Get Fibonacci Element N in Linear Time"
     let rek : (i 0) (u 1) (v 1)
         if : >= i : - n 2
@@ -12,51 +12,68 @@ define : fib n
 
 ; display : fib 5
 
-;; Try an infix notation with curly brackets - curly infix from readable as simple macro
-define-syntax {
-    syntax-rules : { }
-        : { left infix right } 
-          infix left right
+;; Try it with curly infix
 
-; display : { 1 + 2 }
+;; First activate curly infix
+. #!curly-infix 
 
-;; Now do the fibonacci again
-define : fibcurl n
-    . "Get Fibonacci Elements in Linear Time"
+;; Now define fibonacci with curly infix.
+define : fibonacci n
+    . "Get Fibonacci Element N in Linear Time"
     let rek : (i 0) (u 1) (v 1)
-        if : { i >= ({ n - 2 }) }
+        if {i >= {n - 2}}
             . v
-            rek ({ i + 1 }) v ({ u + v }) ; else
+            rek {i + 1} v {u + v}
 
-; display : fibcurl 5
 
-;; Do a more complete syntax-rule
+
+;; Due to the compatibility with curly-infix, the following is no longer possible.
 
 ;; Try an infix notation with curly brackets - curly infix from readable as simple macro
-define-syntax {
-    syntax-rules : { }
-        : { l in r } 
-          in l r
-        : { { ll lin lr } in r } 
-          in (lin ll lr) r
-        : { l in { rl rin rr } } 
-          in l (rin rl rr)
-        : { { ll lin lr } in { rl rin rr } } 
-          in (lin ll lr) (rin rl rr)
-
-;; And a complete infix-fibonacci
-define : fibcurl2 n
-    . "Get Fibonacci Elements in Linear Time"
-    let rek : (i 0) (u 1) (v 1)
-        if : { i >= { n - 2 } }
-            . v
-            rek 
-               { i + 1 } 
-               . v 
-               { u + v }
-
-;; But to be frank: Prefix looks better.
-
-display : { { 1 + 2 } * { 2 * 3 } }
-; display : fibcurl2 5
-; TODO: Make the macro recursive, so it can actually cover arbitrary depths of curly braces.
+;; define-syntax {
+;;     syntax-rules : { }
+;;         : { left infix right } 
+;;           infix left right
+;; 
+;; ; display : { 1 + 2 }
+;; 
+;; ;; Now do the fibonacci again
+;; define : fibcurl n
+;;     . "Get Fibonacci Elements in Linear Time"
+;;     let rek : (i 0) (u 1) (v 1)
+;;         if : { i >= ({ n - 2 }) }
+;;             . v
+;;             rek ({ i + 1 }) v ({ u + v }) ; else
+;; 
+;; ; display : fibcurl 5
+;; 
+;; ;; Do a more complete syntax-rule
+;; 
+;; ;; Try an infix notation with curly brackets - curly infix from readable as simple macro
+;; define-syntax {
+;;     syntax-rules : { }
+;;         : { l in r } 
+;;           in l r
+;;         : { { ll lin lr } in r } 
+;;           in (lin ll lr) r
+;;         : { l in { rl rin rr } } 
+;;           in l (rin rl rr)
+;;         : { { ll lin lr } in { rl rin rr } } 
+;;           in (lin ll lr) (rin rl rr)
+;; 
+;; ;; And a complete infix-fibonacci
+;; define : fibcurl2 n
+;;     . "Get Fibonacci Elements in Linear Time"
+;;     let rek : (i 0) (u 1) (v 1)
+;;         if : { i >= { n - 2 } }
+;;             . v
+;;             rek 
+;;                { i + 1 } 
+;;                . v 
+;;                { u + v }
+;; 
+;; ;; But to be frank: Prefix looks better.
+;; 
+;; display : { { 1 + 2 } * { 2 * 3 } }
+;; ; display : fibcurl2 5
+;; ; TODO: Make the macro recursive, so it can actually cover arbitrary depths of curly braces.