wisp
 
(Arne Babenhauserheide)
2015-03-03: multithreaded magic with guile the reader version of wisp

multithreaded magic with guile the reader version of wisp

diff --git a/examples/multithreaded-magic.w b/examples/multithreaded-magic.w
--- a/examples/multithreaded-magic.w
+++ b/examples/multithreaded-magic.w
@@ -1,6 +1,9 @@
-#!./wisp-multiline.sh
+#!/usr/bin/env sh
+exec guile -L $(dirname $(dirname $(realpath "$0"))) --language=wisp -e '(@@ (examples multithreaded-magic) main)' -s "$0" "$@"
 ; !#
 
+define-module : examples multithreaded-magic
+
 ; Mathematical magic: Always get one.
 ; 
 ; Via http://www.liv.ac.uk/HPC/HTMLF90Course/HTMLF90CourseQuestionsnode18.html
@@ -8,6 +11,8 @@
 ; 
 ; this is the wisp scheme version which I want to compare with the fortran version.
 
+; Call as PATH=~/guile/meta:$PATH ./examples/multithreaded-magic.w
+
 use-modules 
   ice-9 format
   ice-9 futures
@@ -15,12 +20,17 @@ use-modules
 
 define : magic-threaded mutex futures integer
   ; this can cause unordered output. It’s fun anyway : 
-  set! futures : append futures : list : future : with-mutex mutex : format #t "~30r\n" integer
-  if : not : = integer 1
-    if : even? integer
-      magic-threaded mutex futures : / integer 2
-      magic-threaded mutex futures : truncate : + 1 : / integer 3 
-    for-each touch futures
+  let
+    :
+      futures
+        cons : future : with-mutex mutex : format #t "~30r\n" integer
+          . futures
+    if : not : = integer 1
+      if : even? integer
+        magic-threaded mutex futures {integer / 2}
+        magic-threaded mutex futures
+              truncate : + 1 {integer / 3}
+      for-each touch futures
 
 define : magic integer
   magic-threaded
@@ -35,7 +45,8 @@ define : magic-simple integer
       magic-simple : / integer 2
       magic-simple : truncate : + 1 : / integer 3 
 
-display ";;; multithreaded magic ;;;\n"
-magic 456189456156456196152615
-display ";;; simple magic ;;;\n"
-magic-simple 456189456156456196152615
+define : main args
+         display ";;; multithreaded magic ;;;\n"
+         magic 456189456156456196152615
+         display ";;; simple magic ;;;\n"
+         magic-simple 456189456156456196152615