(Arne Babenhauserheide)
2017-11-17: examples: update and cleanup fibonacci examples: update and cleanup fibonacci
diff --git a/examples/fib.w b/examples/fib.w --- a/examples/fib.w +++ b/examples/fib.w @@ -1,4 +1,7 @@ -#!/home/arne/wisp/wisp-multiline.sh +#!/usr/bin/env sh +# -*- wisp -*- +guile-2.0 -L $(dirname $(dirname $(realpath "$0"))) -c '(import (language wisp spec))' +exec guile-2.0 -L $(dirname $(dirname $(realpath "$0"))) --language=wisp -s "$0" "$@" ; !# ;; Fibonacci Functions @@ -29,53 +32,13 @@ display . {1 + 1} newline -;; Due to the compatibility with curly-infix, the following is no longer possible. +;; 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 } -;; Try an infix notation with curly brackets - curly infix from readable as simple macro -;; 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. +display : fibcurl2 5 +newline