; 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)
OyBzdHJpbmcgY29tcGFyaXNvbgoKKGRlZmluZSAoY2xlYW4gc3RyKQogIChsZXQgbG9vcCAoKHhzIChzdHJpbmctPmxpc3Qgc3RyKSkgKHpzIChsaXN0KSkpCiAgICAoY29uZCAoKG51bGw/IHhzKSAobGlzdC0+c3RyaW5nIChyZXZlcnNlIHpzKSkpCiAgICAgICAgICAoKGNoYXI9PyAoY2FyIHhzKSAjXCMpIChsb29wIChjZHIgeHMpIChjZHIgenMpKSkKICAgICAgICAgIChlbHNlIChsb29wIChjZHIgeHMpIChjb25zIChjYXIgeHMpIHpzKSkpKSkpCgooZGVmaW5lIChjb21wIHMxIHMyKSAoc3RyaW5nPT8gKGNsZWFuIHMxKSAoY2xlYW4gczIpKSkKCihkaXNwbGF5IChjb21wICJhYmN4I2RlIiAiYWJjZGUiKSkgKG5ld2xpbmUp