! (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
! 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
! 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
! 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
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: \ ; ;