]> gitweb.factorcode.org Git - factor.git/commitdiff
Add compiler transform for index with a literal sequenc
authorSlava Pestov <slava@slava-pestovs-macbook-pro.local>
Sat, 28 Mar 2009 01:05:23 +0000 (20:05 -0500)
committerSlava Pestov <slava@slava-pestovs-macbook-pro.local>
Sat, 28 Mar 2009 01:05:23 +0000 (20:05 -0500)
basis/stack-checker/transforms/transforms.factor

index dd36c5a82b9dacc73782bf496724188519bf7290..c2b348f5f1228ede105a61b80ee5d62b24e05982 100755 (executable)
@@ -154,6 +154,15 @@ CONSTANT: bit-member-max 256
     dup sequence? [ memq-quot ] [ drop f ] if
 ] 1 define-transform
 
+! Index search
+\ index [
+    dup sequence? [
+        dup length 4 >= [
+            dup length zip >hashtable '[ _ at ]
+        ] [ drop f ] if
+    ] [ drop f ] if
+] 1 define-transform
+
 ! Shuffling
 : nths-quot ( indices -- quot )
     [ [ '[ _ swap nth ] ] map ] [ length ] bi