* moved string to ikarus.strings
This commit is contained in:
parent
970613559c
commit
bc4b74b895
BIN
src/ikarus.boot
BIN
src/ikarus.boot
Binary file not shown.
|
@ -111,22 +111,7 @@
|
||||||
(error 'set-top-level-value! "~s is not a symbol" x))
|
(error 'set-top-level-value! "~s is not a symbol" x))
|
||||||
($set-symbol-value! x v)))
|
($set-symbol-value! x v)))
|
||||||
|
|
||||||
(primitive-set! 'symbol? (lambda (x) (symbol? x)))
|
|
||||||
|
|
||||||
;(primitive-set! 'primitive?
|
|
||||||
; (lambda (x)
|
|
||||||
; (unless (symbol? x)
|
|
||||||
; (error 'primitive? "~s is not a symbol" x))
|
|
||||||
; (procedure? (primitive-ref x))))
|
|
||||||
;
|
|
||||||
;(primitive-set! 'primitive-ref
|
|
||||||
; (lambda (x)
|
|
||||||
; (unless (symbol? x)
|
|
||||||
; (error 'primitive-ref "~s is not a symbol" x))
|
|
||||||
; (let ([v (primitive-ref x)])
|
|
||||||
; (unless (procedure? v)
|
|
||||||
; (error 'primitive-ref "~s is not a primitive" x))
|
|
||||||
; v)))
|
|
||||||
|
|
||||||
(primitive-set! 'primitive-set!
|
(primitive-set! 'primitive-set!
|
||||||
(lambda (x v)
|
(lambda (x v)
|
||||||
|
@ -573,25 +558,6 @@
|
||||||
(let ([v (make-vector n)])
|
(let ([v (make-vector n)])
|
||||||
(loop v ls 0 n))))))
|
(loop v ls 0 n))))))
|
||||||
|
|
||||||
(primitive-set! 'string
|
|
||||||
;;; FIXME: add case-lambda
|
|
||||||
(letrec ([length
|
|
||||||
(lambda (ls n)
|
|
||||||
(cond
|
|
||||||
[(null? ls) n]
|
|
||||||
[(char? ($car ls)) (length ($cdr ls) ($fx+ n 1))]
|
|
||||||
[else (error 'string "~s is not a character" ($car ls))]))]
|
|
||||||
[loop
|
|
||||||
(lambda (s ls i n)
|
|
||||||
(cond
|
|
||||||
[($fx= i n) s]
|
|
||||||
[else
|
|
||||||
($string-set! s i ($car ls))
|
|
||||||
(loop s ($cdr ls) ($fx+ i 1) n)]))])
|
|
||||||
(lambda ls
|
|
||||||
(let ([n (length ls 0)])
|
|
||||||
(let ([s (make-string n)])
|
|
||||||
(loop s ls 0 n))))))
|
|
||||||
|
|
||||||
(primitive-set! 'list?
|
(primitive-set! 'list?
|
||||||
(letrec ([race
|
(letrec ([race
|
||||||
|
|
|
@ -1,10 +1,10 @@
|
||||||
|
|
||||||
(library (ikarus strings)
|
(library (ikarus strings)
|
||||||
(export string-length string-ref string-set! make-string string->list string=?
|
(export string-length string-ref string-set! make-string string->list string=?
|
||||||
string-append substring)
|
string-append substring string)
|
||||||
(import
|
(import
|
||||||
(except (ikarus) string-length string-ref string-set! make-string
|
(except (ikarus) string-length string-ref string-set! make-string
|
||||||
string->list string=? string-append substring)
|
string->list string=? string-append substring string)
|
||||||
(only (scheme)
|
(only (scheme)
|
||||||
$fx+ $fxsub1 $fxadd1 $char= $car $cdr
|
$fx+ $fxsub1 $fxadd1 $char= $car $cdr
|
||||||
$fxzero? $fx= $fx<= $fx< $fx>= $fx-
|
$fxzero? $fx= $fx<= $fx< $fx>= $fx-
|
||||||
|
@ -67,6 +67,26 @@
|
||||||
make-string))
|
make-string))
|
||||||
|
|
||||||
|
|
||||||
|
(define string
|
||||||
|
;;; FIXME: add case-lambda
|
||||||
|
(letrec ([length
|
||||||
|
(lambda (ls n)
|
||||||
|
(cond
|
||||||
|
[(null? ls) n]
|
||||||
|
[(char? ($car ls)) (length ($cdr ls) ($fx+ n 1))]
|
||||||
|
[else (error 'string "~s is not a character" ($car ls))]))]
|
||||||
|
[loop
|
||||||
|
(lambda (s ls i n)
|
||||||
|
(cond
|
||||||
|
[($fx= i n) s]
|
||||||
|
[else
|
||||||
|
($string-set! s i ($car ls))
|
||||||
|
(loop s ($cdr ls) ($fx+ i 1) n)]))])
|
||||||
|
(lambda ls
|
||||||
|
(let ([n (length ls 0)])
|
||||||
|
(let ([s (make-string n)])
|
||||||
|
(loop s ls 0 n))))))
|
||||||
|
|
||||||
(module (substring)
|
(module (substring)
|
||||||
(define fill
|
(define fill
|
||||||
(lambda (s d si sj di)
|
(lambda (s d si sj di)
|
||||||
|
|
Loading…
Reference in New Issue