Disabled external gits
This commit is contained in:
41
cs420-acc/l3-compiler/library/strings.l3
Normal file
41
cs420-acc/l3-compiler/library/strings.l3
Normal file
@@ -0,0 +1,41 @@
|
||||
;; In Emacs, open this file in -*- Scheme -*- mode.
|
||||
|
||||
;; Strings
|
||||
|
||||
(def string?
|
||||
(fun (o)
|
||||
(and (@block? o) (= 200 (@block-tag o)))))
|
||||
|
||||
(def string-length
|
||||
(fun (s)
|
||||
(@block-length s)))
|
||||
|
||||
(def string-get
|
||||
(fun (s i)
|
||||
(@block-get s i)))
|
||||
|
||||
(def string-print
|
||||
(fun (s)
|
||||
(rec loop ((i 0))
|
||||
(if (< i (string-length s))
|
||||
(begin
|
||||
(char-print (string-get s i))
|
||||
(loop (+ i 1)))))))
|
||||
|
||||
(def string-concat
|
||||
(fun (s1 s2)
|
||||
(let* ((l1 (string-length s1))
|
||||
(l2 (string-length s2))
|
||||
(n (+ l1 l2))
|
||||
(s (@block-alloc-200 n)))
|
||||
(rec loop ((i 0))
|
||||
(if (< i l1)
|
||||
(begin
|
||||
(@block-set! s i (@block-get s1 i))
|
||||
(loop (+ i 1)))))
|
||||
(rec loop ((i 0))
|
||||
(if (< i l2)
|
||||
(begin
|
||||
(@block-set! s (+ i l1) (@block-get s2 i))
|
||||
(loop (+ i 1)))))
|
||||
s)))
|
Reference in New Issue
Block a user