From d08a28cfc19b89c5a2056b9aa9a95f41f8bd9aa6 Mon Sep 17 00:00:00 2001 From: Jan Nieuwenhuizen Date: Tue, 20 Dec 2016 19:01:00 +0100 Subject: [PATCH] Add string->number. * module/mes/scm.mes (string->number): New function. --- module/mes/scm.mes | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/module/mes/scm.mes b/module/mes/scm.mes index d39fee35..ad1198f3 100644 --- a/module/mes/scm.mes +++ b/module/mes/scm.mes @@ -91,6 +91,15 @@ (if (= i n) '() (cons (string-ref s i) (loop (+ i 1))))))) +(define (string->number s . radix) + (if (and (pair? radix) (not (= (car radix) 10))) '*STRING->NUMBER:RADIX-NOT-SUPPORTED + (let* ((lst (string->list s)) + (sign (if (char=? (car lst) #\-) -1 1)) + (lst (if (= sign -1) (cdr lst) lst))) + (let loop ((lst lst) (n 0)) + (if (null? lst) (* sign n) + (loop (cdr lst) (+ (* n 10) (- (char->integer (car lst)) (char->integer #\0))))))))) + (define (vector . rest) (list->vector rest)) (define c:make-vector make-vector) (define (make-vector n . x)