wisp
 
(Arne Babenhauserheide)
2013-08-10: use let-recursion for calling the linesplitter.

use let-recursion for calling the linesplitter.

diff --git a/wisp-guile.w b/wisp-guile.w
--- a/wisp-guile.w
+++ b/wisp-guile.w
@@ -91,7 +91,9 @@ define : nostringandbracketbreaks inport
                         set! text : string-append text "\\LINE_BREAK_R"
                         ; else
                         set! text : string-append text : string nextchar
-                ; mark the start of a comment, so we do not have to repeat the string matching in later code
+                ; mark the start of a comment, so we do not have to
+                ; repeat the string matching in later code. We include
+                ; the comment character!
                 if incommentfirstchar
                     set! text : string-append text ( string nextchar ) "\\REALCOMMENTHERE"
                     ; when not in brackets or string or starting a
@@ -187,16 +189,19 @@ define : splitindent inport
 
 ; Now use the function to split a list of lines
 define : linestoindented lines
-    let 
-        : split '()
-          lineindex 0
-          nextline : list-ref lines 0
-        while : < ( + lineindex 1 ) : length lines
-            set! split : append split : list : call-with-input-string nextline splitindent
-            set! lineindex : + lineindex 1
-            set! nextline : list-ref lines lineindex
-            
-        . split
+    let splitter
+        : unprocessed lines
+          processed '()
+        if : equal? unprocessed '()
+            . processed
+            ; else: let-recursion
+            splitter
+                list-tail unprocessed 1
+                append processed 
+                    list 
+                        call-with-input-string 
+                            list-ref unprocessed 0
+                            . splitindent
 
 
 ; first step: Be able to mirror a file to stdout
@@ -210,10 +215,11 @@ let*
         set! text : string-append text : string nextchar
         set! nextchar : read-char origfile
     set! text : call-with-input-string text nostringandbracketbreaks
-    display text
-    ; set! lines : call-with-input-string text splitlines
-    ; set! lines : linestoindented lines
-    ; display : list-ref lines 0
+    ; display text ; seems good
+    set! lines : call-with-input-string text splitlines 
+    ; display : list-ref lines 100 ; seems good
+    set! lines : linestoindented lines
+    display : list-ref lines 1
 
 
 newline