Updated README.
[scheme.forth.jl.git] / scheme-primitives.4th
index 9afc2c2..1d2e21c 100644 (file)
@@ -45,7 +45,7 @@
 :noname ( args -- boolobj )
     2dup 1 ensure-arg-count
 
-    car primitive-type istype? -rot 2drop boolean-type
+    car primitive-proc-type istype? -rot 2drop boolean-type
 ; make-primitive procedure?
 
 ( = Type conversions = )
     drop character-type
 ; make-primitive integer->char
 
-: num-to-charlist ( num -- charlist )
-    ?dup 0= if
+: fixnum-to-charlist ( fixnum -- charlist )
+    over 0= if
+        2drop
         [char] 0 character-type nil cons
         exit
     then
 
-    nil rot
+    nil 2swap ( charlist fixnum )
 
     begin
-        ?dup 0>
+        over 0>
     while
-        dup 10 mod swap 10 / swap
-        2swap rot
-        [char] 0 + character-type 2swap
-        cons
-        rot
+        2dup swap 10 mod swap ( charlist fixnum fixnummod )
+        2swap swap 10 / swap  ( charlist fixnummod fixnumdiv )
+        -2rot ( fixnumdiv charlist fixnummod )
+
+        drop [char] 0 + character-type 2swap
+        cons ( fixnumdiv newcharlist )
+
+        2swap 
     repeat
+
+    2drop
 ;
 
 :noname ( args -- string )
     2dup 1 ensure-arg-count
     car fixnum-type ensure-arg-type
 
-    drop
+    2dup swap abs swap
 
-    dup 0< swap abs ( bool num )
-    num-to-charlist
-    rot if
+    fixnum-to-charlist ( fixnum charlist )
+    2swap drop 0< if
         [char] - character-type 2swap cons
     then