wisp
 
(Arne Babenhauserheide)
2015-06-22: implement sxg->number

implement sxg->number

diff --git a/examples/newbase60.w b/examples/newbase60.w
--- a/examples/newbase60.w
+++ b/examples/newbase60.w
@@ -17,8 +17,7 @@ define base60numbers
        append
          map cons (string->list base60letters) : iota : string-length base60letters
          quote
-           : 
-             #\l . 1 ; typo lowercase l to 1
+           : #\l . 1 ; typo lowercase l to 1
              #\I . 1 ; typo capital I to 1
              #\O . 0 ; typo capital O to 0
 
@@ -26,15 +25,24 @@ define : integer->sxg num
          if : equal? 0 num
             . "0"
             let loop
-               : s '()
-                 n num
-               if : equal? n 0
-                    list->string : reverse s
-                    loop
-                      cons 
-                        string-ref base60letters (remainder n 60)
-                        . s
-                      quotient n 60
+              : s '()
+                n num
+              if : equal? n 0
+                 list->string s
+                 loop
+                   cons (string-ref base60letters (remainder n 60)) s
+                   quotient n 60
+
+define : sxg->number string
+         let loop
+           : n 0
+             s string
+           if : equal? "" s
+              . n
+              loop
+                + : assoc-ref base60numbers : string-ref s 0
+                  * n 60
+                string-drop s 1
 
 define : main args
-       display : integer->sxg 61
+       display : sxg->number : integer->sxg 60