]> gitweb.factorcode.org Git - factor.git/commitdiff
mirrors: simplify code with fry.
authorJohn Benediktsson <mrjbq7@gmail.com>
Mon, 22 Apr 2013 18:48:26 +0000 (11:48 -0700)
committerJohn Benediktsson <mrjbq7@gmail.com>
Mon, 22 Apr 2013 18:48:26 +0000 (11:48 -0700)
basis/mirrors/mirrors.factor

index 2fd4f07ab0af24593798d595ec99f810df14fee2..7778664556f5ea888b56e2ae0d03acf3ef1feb30 100644 (file)
@@ -1,9 +1,8 @@
 ! Copyright (C) 2007, 2008 Slava Pestov.
 ! See http://factorcode.org/license.txt for BSD license.
-USING: assocs hashtables kernel sequences generic words
-arrays classes slots slots.private classes.tuple
-classes.tuple.private math vectors math.vectors quotations
-accessors combinators byte-arrays vocabs vocabs.loader ;
+USING: accessors arrays assocs byte-arrays classes
+classes.tuple classes.tuple.private combinators fry hashtables
+kernel math quotations sequences slots slots.private vectors ;
 IN: mirrors
 
 TUPLE: mirror { object read-only } ;
@@ -35,21 +34,21 @@ M: mirror delete-at ( key mirror -- )
     [ f ] 2dip set-at ;
 
 M: mirror clear-assoc ( mirror -- )
-    [ object>> ] [ object-slots ] bi [
-        [ initial>> ] [ offset>> ] bi swapd set-slot
-    ] with each ;
+    [ object-slots ] [ object>> ] bi '[
+        [ initial>> ] [ offset>> _ swap set-slot ] bi
+    ] each ;
 
 M: mirror >alist ( mirror -- alist )
-    [ object-slots [ [ name>> ] map ] [ [ offset>> ] map ] bi ]
-    [ object>> [ swap slot ] curry ] bi
-    map zip ;
+    [ object-slots ] [ object>> ] bi '[
+        [ name>> ] [ offset>> _ swap slot ] bi
+    ] { } map>assoc ;
 
 M: mirror keys ( mirror -- keys )
     object-slots [ name>> ] map ;
 
 M: mirror values ( mirror -- values )
-    [ object-slots [ offset>> ] map ]
-    [ object>> [ swap slot ] curry ] bi map ;
+    [ object-slots ] [ object>> ] bi
+    '[ offset>> _ swap slot ] map ;
 
 M: mirror assoc-size object>> layout-of second ;