]> gitweb.factorcode.org Git - factor.git/blobdiff - extra/usa-cities/usa-cities.factor
mason: move alignment to mason.css, right align but-last columns in table body
[factor.git] / extra / usa-cities / usa-cities.factor
index deb3e15845789020d6781c3bb4b2cb264d76fdda..ff3d8801071a553459c32cac5987cb351b038008 100644 (file)
@@ -1,8 +1,8 @@
 ! Copyright (C) 2008 Slava Pestov.
-! See http://factorcode.org/license.txt for BSD license.
-USING: io.files io.encodings.ascii sequences generalizations
-math.parser combinators kernel memoize csv summary
-words accessors math.order binary-search ;
+! See https://factorcode.org/license.txt for BSD license.
+USING: accessors binary-search combinators combinators.smart csv
+io.encodings.ascii kernel math.order math.parser sequences
+summary ;
 IN: usa-cities
 
 SINGLETONS: AK AL AR AS AZ CA CO CT DC DE FL GA HI IA ID IL IN
@@ -21,24 +21,26 @@ ERROR: no-such-state name ;
 M: no-such-state summary drop "No such state" ;
 
 MEMO: string>state ( string -- state )
-    dup states [ name>> = ] with find nip
-    [ ] [ no-such-state ] ?if ;
+    [ states [ name>> = ] with find nip ]
+    [ no-such-state ] ?unless ;
 
 TUPLE: city
 first-zip name state latitude longitude gmt-offset dst-offset ;
 
 MEMO: cities ( -- seq )
-    "resource:extra/usa-cities/zipcode.csv" ascii <file-reader>
-    csv rest-slice [
-        7 firstn {
-            [ string>number ]
-            [ ]
-            [ string>state ]
-            [ string>number ]
-            [ string>number ]
-            [ string>number ]
-            [ string>number ]
-        } spread city boa
+    "vocab:usa-cities/zipcode.csv" ascii file>csv
+    rest-slice [
+        [
+            {
+                [ string>number ]
+                [ ]
+                [ string>state ]
+                [ string>number ]
+                [ string>number ]
+                [ string>number ]
+                [ string>number ]
+            } spread
+        ] input<sequence city boa
     ] map ;
 
 MEMO: cities-named ( name -- cities )
@@ -46,8 +48,8 @@ MEMO: cities-named ( name -- cities )
 
 MEMO: cities-named-in ( name state -- cities )
     cities [
-        tuck [ name>> = ] [ state>> = ] 2bi* and
-    ] with with filter ;
+        [ name>> = ] [ state>> = ] bi-curry bi* and
+    ] 2with filter ;
 
 : find-zip-code ( code -- city )
     cities [ first-zip>> <=> ] with search nip ;