core: Remove symbol_to_list, char_to_integer, integer_to_char.
authorJan Nieuwenhuizen <janneke@gnu.org>
Fri, 23 Dec 2016 22:25:49 +0000 (23:25 +0100)
committerJan Nieuwenhuizen <janneke@gnu.org>
Fri, 23 Dec 2016 22:25:49 +0000 (23:25 +0100)
* mes.c (symbol_to_list, char_to_integer, integer_to_char): Remove
* module/mes/read-0.mes (symbol->list, integer->char,
  symbol->keyword): New function.
  (read-word): Use symbol->keyword.
* module/mes/type-0.mes (char->integer): New function.
* module/mes/scm.mes (keyword->symbol): New function.

mes.c
module/mes/read-0.mes
module/mes/scm.mes
module/mes/type-0.mes

diff --git a/mes.c b/mes.c
index 6df14a968ea573c427dff60d4f40adbd5702d8a0..dd8115495732f1ae91044957b08ad76a8494cde3 100644 (file)
--- a/mes.c
+++ b/mes.c
@@ -868,27 +868,6 @@ write_char (SCM x) ///((arity . n))
   return c;
 }
 
-SCM
-symbol_to_list (SCM x)
-{
-  assert (TYPE (x) == SYMBOL);
-  return STRING (x);
-}
-
-SCM
-char_to_integer (SCM x)
-{
-  assert (TYPE (x) == CHAR);
-  return MAKE_NUMBER (VALUE (x));
-}
-
-SCM
-integer_to_char (SCM x)
-{
-  assert (TYPE (x) == NUMBER);
-  return MAKE_CHAR (VALUE (x));
-}
-
 void
 make_tmps (scm* cells)
 {
index 2995621fe26ba85804a9156496a37245947d9ecc..25c6ef992d529cd35ffd0a96d99f71fcbf7306f7 100644 (file)
                (quote ((current-module))))))
      (current-module))) (current-module))
 
+  (define <cell:character> 0)
   (define <cell:keyword> 3)
   (define <cell:string> 9)
 
+  (define (list->symbol lst) (make-symbol lst))
+
+  (define (symbol->list s)
+    (core:car s))
+
   (define (list->string lst)
     (make-cell <cell:string> lst 0))
 
+  (define (integer->char x)
+    (make-cell <cell:character> 0 x))
+
+  (define (symbol->keyword s)
+    (make-cell <cell:keyword> (symbol->list s) 0))
+  
   (define (read)
     (read-word (read-byte) (list) (current-module)))
 
   (define (not x)
     (if x #f #t))
   
-  (define (list->symbol lst) (make-symbol lst))
-
   (define (read-character)
     (define (read-octal c p n)
       (if (not (and (> p 47) (< p 56))) n
                   ((eq? (peek-byte) 39) (read-byte)
                    (cons (quote syntax) (cons (read-word (read-byte) w a) (list))))
                   ((eq? (peek-byte) 58) (read-byte)
-                   (make-cell <cell:keyword> (symbol->list (read-word (read-byte) (list) a)) 0))
+                   (symbol->keyword (read-word (read-byte) (list) a)))
                   ((eq? (peek-byte) 59) (read-byte)
                    (read-word (read-byte) w a)
                    (read-word (read-byte) w a))
index 2054278244224bad6405000367fde35e02eb8537..c5da0f6cfc99b2212b798e876de068ca36e44317 100644 (file)
         (set! counter (+ counter 1))
         (string->symbol (string-append "g" value))))))
 
+\f
+;;; Keywords
+(define (keyword->symbol s)
+  (list->symbol (keyword->list s)))
+
 \f
 ;;; Characters
 (define (char=? x y)
index 40b2958b6544fee89b2142f3df55ebbf3c271913..457de45cfba0bf01acfd58be0dd52895ec995bed 100644 (file)
 (define (symbol->list s)
   (core:car s))
 
+(define (keyword->list s)
+  (core:car s))
+
 (define (symbol->string s)
   (apply string (symbol->list s)))
 
 (define (string-append . rest)
   (apply string (apply append (map1 string->list rest))))
+
+(define (integer->char x)
+  (make-cell <cell:character> 0 x))
+
+(define (char->integer x)
+  (make-cell <cell:number> 0 x))