memoize: implement identity memoize, trim using lists so bootstrap continues to work
parent
b26ddc37e8
commit
f0b6494c76
|
@ -1,6 +1,6 @@
|
||||||
! (c)2010 Joe Groff bsd license
|
! (c)2010 Joe Groff bsd license
|
||||||
USING: accessors arrays assocs hashtables hashtables.wrapped
|
USING: accessors assocs hashtables hashtables.wrapped kernel
|
||||||
kernel parser sequences vocabs.loader ;
|
parser vocabs.loader ;
|
||||||
IN: hashtables.identity
|
IN: hashtables.identity
|
||||||
|
|
||||||
TUPLE: identity-wrapper < wrapped-key ;
|
TUPLE: identity-wrapper < wrapped-key ;
|
||||||
|
|
|
@ -1,9 +1,8 @@
|
||||||
! Copyright (C) 2011 John Benediktsson
|
! Copyright (C) 2011 John Benediktsson
|
||||||
! See http://factorcode.org/license.txt for BSD license
|
! See http://factorcode.org/license.txt for BSD license
|
||||||
|
|
||||||
USING: assocs continuations hashtables.wrapped kernel
|
USING: assocs continuations hashtables.wrapped namespaces
|
||||||
namespaces prettyprint.backend prettyprint.config
|
prettyprint.config prettyprint.custom ;
|
||||||
prettyprint.custom ;
|
|
||||||
|
|
||||||
IN: hashtables.wrapped.prettyprint
|
IN: hashtables.wrapped.prettyprint
|
||||||
|
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
! Copyright (C) 2011 John Benediktsson
|
! Copyright (C) 2011 John Benediktsson
|
||||||
! See http://factorcode.org/license.txt for BSD license
|
! See http://factorcode.org/license.txt for BSD license
|
||||||
|
|
||||||
USING: accessors arrays assocs fry hashtables kernel parser
|
USING: accessors arrays assocs hashtables kernel sequences
|
||||||
sequences vocabs.loader ;
|
vocabs.loader ;
|
||||||
|
|
||||||
IN: hashtables.wrapped
|
IN: hashtables.wrapped
|
||||||
|
|
||||||
|
|
|
@ -21,6 +21,8 @@ SYNTAX: MACRO:: (::) define-macro ;
|
||||||
|
|
||||||
SYNTAX: MEMO:: (::) define-memoized ;
|
SYNTAX: MEMO:: (::) define-memoized ;
|
||||||
|
|
||||||
|
SYNTAX: IDENTITY-MEMO:: (::) define-identity-memoized ;
|
||||||
|
|
||||||
{
|
{
|
||||||
"locals.macros"
|
"locals.macros"
|
||||||
"locals.fry"
|
"locals.fry"
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
! See http://factorcode.org/license.txt for BSD license.
|
! See http://factorcode.org/license.txt for BSD license.
|
||||||
USING: kernel hashtables sequences sequences.private arrays
|
USING: kernel hashtables sequences sequences.private arrays
|
||||||
words namespaces make parser effects.parser math assocs effects
|
words namespaces make parser effects.parser math assocs effects
|
||||||
definitions quotations summary accessors fry ;
|
definitions quotations summary accessors fry hashtables.identity ;
|
||||||
IN: memoize
|
IN: memoize
|
||||||
|
|
||||||
<PRIVATE
|
<PRIVATE
|
||||||
|
@ -44,14 +44,22 @@ IN: memoize
|
||||||
|
|
||||||
PRIVATE>
|
PRIVATE>
|
||||||
|
|
||||||
: define-memoized ( word quot effect -- )
|
: (define-memoized) ( word quot effect hashtable -- )
|
||||||
[ drop "memo-quot" set-word-prop ]
|
[ [ drop "memo-quot" set-word-prop ] ] dip
|
||||||
[ 2drop H{ } clone "memoize" set-word-prop ]
|
'[ 2drop _ "memoize" set-word-prop ]
|
||||||
[ [ [ dup "memoize" word-prop ] 2dip make-memoizer ] keep define-declared ]
|
[ [ [ dup "memoize" word-prop ] 2dip make-memoizer ] keep define-declared ]
|
||||||
3tri ;
|
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: MEMO: (:) define-memoized ;
|
||||||
|
|
||||||
|
SYNTAX: IDENTITY-MEMO: (:) define-identity-memoized ;
|
||||||
|
|
||||||
PREDICATE: memoized < word "memoize" word-prop ;
|
PREDICATE: memoized < word "memoize" word-prop ;
|
||||||
|
|
||||||
M: memoized definer drop \ MEMO: \ ; ;
|
M: memoized definer drop \ MEMO: \ ; ;
|
||||||
|
|
Loading…
Reference in New Issue