1 (define-module (lang elisp primitives lists)
2 #:use-module (lang elisp internals fset)
3 #:use-module (lang elisp internals null)
4 #:use-module (lang elisp internals signal))
27 (and (null x) (null y)))))
32 (and (null x) (null y)))))
34 (fset 'setcar set-car!)
36 (fset 'setcdr set-cdr!)
38 (for-each (lambda (sym proc)
47 (else (loop (cdr l)))))
49 '( memq member assq assoc)
50 `(,memq ,member ,assq ,assoc))
55 ((pair? x) (length x))
56 ((vector? x) (vector-length x))
57 ((string? x) (string-length x))
58 (else (wta 'sequencep x 1)))))
62 (cond ((list? x) (list-copy x))
63 ((vector? x) (error "Vector copy not yet implemented"))
64 ((string? x) (string-copy x))
65 (else (wta 'sequencep x 1)))))
69 (cond ((pair? obj) (list-ref obj i))
70 ((vector? obj) (vector-ref obj i))
71 ((string? obj) (char->integer (string-ref obj i))))))
76 (lambda (function sequence)
78 (elisp-apply function (list elt)))
79 (cond ((null sequence) '())
80 ((list? sequence) sequence)
81 ((vector? sequence) (vector->list sequence))
82 ((string? sequence) (map char->integer (string->list sequence)))
83 (else (wta 'sequencep sequence 2))))))
101 (apply append! (map (lambda (arg)