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)