Returns the position of the first occurance of target in source, or -1 if it does not occur.
(define (string-index source target)
;; Finds first occurance of 'target' in 'source'
(let loop ((str source) (pos 0))
(if (< (string-length str) (string-length target))
-1
(if (string=? (substring str 0 (string-length target)) target)
pos
(loop (substring str 1 (string-length str))
(+ pos 1))))))