+++ /dev/null
-Slava Pestov
+++ /dev/null
-USING: soundex tools.test ;
-
-{ "S162" } [ "supercalifrag" soundex ] unit-test
-{ "M000" } [ "M" soundex ] unit-test
-
-{ "R163" } [ "Robert" soundex ] unit-test
-{ "R163" } [ "Rupert" soundex ] unit-test
-{ "R150" } [ "Rubin" soundex ] unit-test
-{ "A261" } [ "Ashcraft" soundex ] unit-test
-{ "A261" } [ "Ashcroft" soundex ] unit-test
-{ "T522" } [ "Tymczak" soundex ] unit-test
-{ "P236" } [ "Pfister" soundex ] unit-test
+++ /dev/null
-! Copyright (C) 2008 Slava Pestov.
-! See http://factorcode.org/license.txt for BSD license.
-USING: ascii kernel sequences tr ;
-IN: soundex
-
-<PRIVATE
-
-TR: soundex-digits
- "AEHIOUWYBFPVCGJKQSXZDTLMNR"
- "AEHIOUWY111122222222334556" ;
-
-: remove-duplicates ( seq -- seq' )
- ! Remove _consecutive_ duplicates (unlike prune which removes
- ! all duplicates).
- f swap [ [ = ] keep swap ] reject nip ;
-
-: pad-4 ( seq -- seq' ) "000" append 4 head ;
-
-: remove-hw ( seq -- seq' )
- unclip [ [ "HW" member? ] reject ] [ prefix ] bi* ;
-
-: remove-aeiouy ( seq -- seq' )
- unclip [ [ "AEIOUY" member? ] reject ] [ prefix ] bi* ;
-
-: ?replace-first ( seq first -- seq )
- over first digit? [ over set-first ] [ drop ] if ;
-
-PRIVATE>
-
-: soundex ( string -- soundex )
- >upper [ LETTER? ] filter [
- remove-hw
- soundex-digits
- remove-duplicates
- remove-aeiouy
- ] keep first ?replace-first pad-4 ;
+++ /dev/null
-Soundex is a phonetic algorithm for indexing names by sound
--- /dev/null
+Slava Pestov
--- /dev/null
+USING: soundex tools.test ;
+
+{ "S162" } [ "supercalifrag" soundex ] unit-test
+{ "M000" } [ "M" soundex ] unit-test
+
+{ "R163" } [ "Robert" soundex ] unit-test
+{ "R163" } [ "Rupert" soundex ] unit-test
+{ "R150" } [ "Rubin" soundex ] unit-test
+{ "A261" } [ "Ashcraft" soundex ] unit-test
+{ "A261" } [ "Ashcroft" soundex ] unit-test
+{ "T522" } [ "Tymczak" soundex ] unit-test
+{ "P236" } [ "Pfister" soundex ] unit-test
--- /dev/null
+! Copyright (C) 2008 Slava Pestov.
+! See http://factorcode.org/license.txt for BSD license.
+USING: ascii kernel sequences tr ;
+IN: soundex
+
+<PRIVATE
+
+TR: soundex-digits
+ "AEHIOUWYBFPVCGJKQSXZDTLMNR"
+ "AEHIOUWY111122222222334556" ;
+
+: remove-duplicates ( seq -- seq' )
+ ! Remove _consecutive_ duplicates (unlike prune which removes
+ ! all duplicates).
+ f swap [ [ = ] keep swap ] reject nip ;
+
+: pad-4 ( seq -- seq' ) "000" append 4 head ;
+
+: remove-hw ( seq -- seq' )
+ unclip [ [ "HW" member? ] reject ] [ prefix ] bi* ;
+
+: remove-aeiouy ( seq -- seq' )
+ unclip [ [ "AEIOUY" member? ] reject ] [ prefix ] bi* ;
+
+: ?replace-first ( seq first -- seq )
+ over first digit? [ over set-first ] [ drop ] if ;
+
+PRIVATE>
+
+: soundex ( string -- soundex )
+ >upper [ LETTER? ] filter [
+ remove-hw
+ soundex-digits
+ remove-duplicates
+ remove-aeiouy
+ ] keep first ?replace-first pad-4 ;
--- /dev/null
+Phonetic algorithm for indexing names by sound