(list-fold-left <list> <value> <procedure>)
(list-fold-right <list> <value> <procedure>)
(list-reverse <list>)
(list-for-each <list> <procedure>)
(list-for-each-with-index <list> <procedure>)
(list-for-each-pair <list> <procedure>)
(list-map <list> <procedure>)
(list-map! <list> <procedure>)
(list-take <list> <integer>)
(list-drop <list> <integer>)
(list-subseq <list> <start:integer> <end:integer>)
(list-filter <list> <procedure>)
(list-copy <list>)
(list-find <list> <procedure>)
(list-index <list> <procedure>) => <integer>
(is-list <variable>)
These libraries:
(dharmalab misc collection vector) (dharmalab misc collection f32-vector) (dharmalab misc collection f64-vector) (dharmalab misc collection string)
export the following procedures, prefixed accordingly (e.g. vector-fold-left
):
(fold-left <seq> <val> <procedure>)
(fold-right <seq> <val> <procedure>)
(for-each <seq> <procedure>)
(for-each-with-index <seq> <procedure>)
(copy <seq>)
(map! <seq> <procedure>)
(map <seq> <procedure>)
(subseq <seq> <start:integer> <end:integer>)
(take <seq> <integer>)
(drop <seq> <integer>)
(filter-to-reverse-list <seq> <procedure>)
(filter <seq> <procedure>)
(index <seq> <procedure>)
(find <seq> <procedure>)
(swap! <seq> <i:integer> <j:integer>)
(reverse! <seq>)
(reverse <seq>)
Macro: define-record-type++
Example:
(define-record-type++ point (fields x y)) (define p (make-point 10 20)) (is-point p) (list p.x p.y) ;; ---> (10 20) (define (distance-from-origin p) (import-point p) (sqrt (+ (* x x) (* y y))))
The standard time
macro is provided by many implementations, but exported from different libraries. This is a common interface to it.
(time <expression>)
Purely functional queue.