;;;; levenshtein-sequence-string.scm -*- Scheme -*- ;;;; Kon Lovett, Mar '20 ;;;; Kon Lovett, Apr '12 ;;;; Kon Lovett, May '06 (include "levenshtein-sequence-interface") (module levenshtein-sequence-string SEQUENCE-OPER (import scheme) (import (chicken base)) (import (chicken type)) (import (srfi 13)) (import type-checks) (import type-errors) (: sequence-length (sequence -> number)) (: sequence-prefix-length (procedure sequence sequence #!rest sequence -> number)) (: sequence-suffix-length (procedure sequence sequence #!rest sequence -> number)) (: sequence-for-each (procedure sequence #!rest sequence -> number)) (: subsequence/shared (sequence number #!optional number -> sequence)) ;;; (define sequence-length string-length) (define (sequence-prefix-length f s1 s2 . rest) (apply string-prefix-length s1 s2 rest) ) (define (sequence-suffix-length f s1 s2 . rest) (apply string-suffix-length s1 s2 rest) ) (define (sequence-for-each f s . rest) (let ((i 0)) (apply string-for-each (lambda (c) (f i c) (set! i (add1 i))) s rest) ) ) (define subsequence/shared substring/shared) ) ;module levenshtein-sequence-string