; string comparison

(define (clean str)
  (let loop ((xs (string->list str)) (zs (list)))
    (cond ((null? xs) (list->string (reverse zs)))
          ((char=? (car xs) #\#) (loop (cdr xs) (cdr zs)))
          (else (loop (cdr xs) (cons (car xs) zs))))))

(define (comp s1 s2) (string=? (clean s1) (clean s2)))

(display (comp "abcx#de" "abcde")) (newline)