1 |
|
(define-module (lang elisp primitives strings) |
2 |
|
#:use-module (lang elisp internals fset) |
3 |
|
#:use-module (lang elisp internals signal)) |
4 |
|
|
5 |
|
(fset 'substring substring) |
6 |
|
|
7 |
|
(fset 'concat |
8 |
|
(lambda args |
9 |
|
(apply string-append |
10 |
|
(map (lambda (arg) |
11 |
|
(cond |
12 |
|
((string? arg) arg) |
13 |
|
((list? arg) (list->string arg)) |
14 |
|
((vector? arg) (list->string (vector->list arg))) |
15 |
|
(else (error "Wrong type argument for concat")))) |
16 |
|
args)))) |
17 |
|
|
18 |
|
(fset 'string-to-number string->number) |
19 |
|
|
20 |
|
(fset 'number-to-string number->string) |
21 |
|
|
22 |
|
(fset 'string-lessp string<?) |
23 |
|
(fset 'string< 'string-lessp) |
24 |
|
|
25 |
|
(fset 'aref |
26 |
|
(lambda (array idx) |
27 |
|
(cond ((vector? array) (vector-ref array idx)) |
28 |
|
((string? array) (char->integer (string-ref array idx))) |
29 |
|
(else (wta 'arrayp array 1))))) |
30 |
|
|
31 |
|
(fset 'stringp string?) |