]> gitweb.factorcode.org Git - factor.git/commitdiff
memoize: implement identity memoize, trim using lists so bootstrap continues to work
authorDoug Coleman <doug.coleman@gmail.com>
Wed, 30 Nov 2011 22:28:40 +0000 (14:28 -0800)
committerDoug Coleman <doug.coleman@gmail.com>
Wed, 30 Nov 2011 22:41:32 +0000 (14:41 -0800)
basis/hashtables/identity/identity.factor
basis/hashtables/wrapped/prettyprint/prettyprint.factor
basis/hashtables/wrapped/wrapped.factor
basis/locals/locals.factor
basis/memoize/memoize.factor

index 0741a53bda199585dbc24ba80fb39e0395ae6411..e8dfd509af53c263df6d1238964aad97c2e2a095 100644 (file)
@@ -1,6 +1,6 @@
 ! (c)2010 Joe Groff bsd license\r
-USING: accessors arrays assocs hashtables hashtables.wrapped\r
-kernel parser sequences vocabs.loader ;\r
+USING: accessors assocs hashtables hashtables.wrapped kernel\r
+parser vocabs.loader ;\r
 IN: hashtables.identity\r
 \r
 TUPLE: identity-wrapper < wrapped-key ;\r
index 038a53e140b71db13f424d8fe42152c420440f7b..d59039f1490ec3771c3df6523e45663515f68267 100644 (file)
@@ -1,9 +1,8 @@
 ! Copyright (C) 2011 John Benediktsson
 ! See http://factorcode.org/license.txt for BSD license
 
-USING: assocs continuations hashtables.wrapped kernel
-namespaces prettyprint.backend prettyprint.config
-prettyprint.custom ;
+USING: assocs continuations hashtables.wrapped namespaces
+prettyprint.config prettyprint.custom ;
 
 IN: hashtables.wrapped.prettyprint
 
index 09a4d94fbae6ab63ce6409ee2e381d139955049f..8c3b47da70910eb27c363ee52c145e1fa1422a7d 100644 (file)
@@ -1,8 +1,8 @@
 ! Copyright (C) 2011 John Benediktsson
 ! See http://factorcode.org/license.txt for BSD license
 
-USING: accessors arrays assocs fry hashtables kernel parser
-sequences vocabs.loader ;
+USING: accessors arrays assocs hashtables kernel sequences
+vocabs.loader ;
 
 IN: hashtables.wrapped
 
index c7b05e0120f362cd0deb588f0768a8afc603fea1..4cb346666788c30bf6a75ad8729245a0ba8b6266 100644 (file)
@@ -21,6 +21,8 @@ SYNTAX: MACRO:: (::) define-macro ;
 
 SYNTAX: MEMO:: (::) define-memoized ;
 
+SYNTAX: IDENTITY-MEMO:: (::) define-identity-memoized ;
+
 {
     "locals.macros"
     "locals.fry"
index 43d447d7c037f88acd41c10ae166f18b870e5b29..1817cf83a919f67d9ed5d780dea3ac0a13e40847 100644 (file)
@@ -2,7 +2,7 @@
 ! See http://factorcode.org/license.txt for BSD license.
 USING: kernel hashtables sequences sequences.private arrays
 words namespaces make parser effects.parser math assocs effects
-definitions quotations summary accessors fry ;
+definitions quotations summary accessors fry hashtables.identity ;
 IN: memoize
 
 <PRIVATE
@@ -44,14 +44,22 @@ IN: memoize
 
 PRIVATE>
 
-: define-memoized ( word quot effect -- )
-    [ drop "memo-quot" set-word-prop ]
-    [ 2drop H{ } clone "memoize" set-word-prop ]
+: (define-memoized) ( word quot effect hashtable -- )
+    [ [ drop "memo-quot" set-word-prop ] ] dip
+    '[ 2drop _ "memoize" set-word-prop ]
     [ [ [ dup "memoize" word-prop ] 2dip make-memoizer ] keep define-declared ]
     3tri ;
 
+: define-memoized ( word quot effect -- )
+    H{ } clone (define-memoized) ;
+
+: define-identity-memoized ( word quot effect -- )
+    IH{ } clone (define-memoized) ;
+
 SYNTAX: MEMO: (:) define-memoized ;
 
+SYNTAX: IDENTITY-MEMO: (:) define-identity-memoized ;
+
 PREDICATE: memoized < word "memoize" word-prop ;
 
 M: memoized definer drop \ MEMO: \ ; ;