Added for-each functions

This commit is contained in:
Justin Ethier 2015-07-28 22:50:41 -04:00
parent 772fcc24f9
commit bef1f7141c
2 changed files with 11 additions and 0 deletions

View file

@ -48,6 +48,7 @@
vector->list
vector->string
vector-map
vector-for-each
make-string
string
string-copy
@ -56,6 +57,7 @@
string->list
string->vector
string-map
string-for-each
make-parameter
current-output-port
current-input-port
@ -266,8 +268,12 @@
(loop start)))
(define (string-map func str)
(list->string (map func (string->list str))))
(define (string-for-each func str)
(for-each func (string->list str)))
(define (vector-map func vec)
(list->vector (map func (vector->list vec))))
(define (vector-for-each func vec)
(for-each func (vector->list vec)))
(define (vector-append . vecs)
(list->vector
(apply append (map vector->list vecs))))

View file

@ -148,6 +148,11 @@
(define a "12345")
(define b (string-copy "abcde"))
(assert:equal "string-copy!" (string-copy! b 1 a 0 2) "a12de")
(let ((v '()))
(string-for-each
(lambda (c) (set! v (cons (char->integer c) v)))
"abcde")
(assert:equal "string-for-each" v '(101 100 99 98 97)))
;; Recursion example:
(letrec ((fnc (lambda (i)