]> git.donarmstrong.com Git - lilypond.git/blob - guile18/lang/elisp/primitives/strings.scm
Import guile-1.8 as multiple upstream tarball component
[lilypond.git] / guile18 / lang / elisp / primitives / strings.scm
1 (define-module (lang elisp primitives strings)
2   #:use-module (lang elisp internals fset)
3   #:use-module (lang elisp internals null)
4   #:use-module (lang elisp internals signal))
5
6 (fset 'substring substring)
7
8 (fset 'concat
9       (lambda args
10         (apply string-append
11                (map (lambda (arg)
12                       (cond
13                        ((string? arg) arg)
14                        ((list? arg) (list->string arg))
15                        ((vector? arg) (list->string (vector->list arg)))
16                        (else (error "Wrong type argument for concat"))))
17                     args))))
18
19 (fset 'string-to-number string->number)
20
21 (fset 'number-to-string number->string)
22
23 (fset 'string-lessp (lambda->nil string<?))
24 (fset 'string< 'string-lessp)
25
26 (fset 'aref
27       (lambda (array idx)
28         (cond ((vector? array) (vector-ref array idx))
29               ((string? array) (char->integer (string-ref array idx)))
30               (else (wta 'arrayp array 1)))))
31
32 (fset 'aset
33       (lambda (array idx newelt)
34         (cond ((vector? array) (vector-set! array idx newelt))
35               ((string? array) (string-set! array idx (integer->char newelt)))
36               (else (wta 'arrayp array 1)))))
37
38 (fset 'stringp (lambda->nil string?))
39
40 (fset 'vector vector)