memoize: moving MEMO[ to memoize.syntax to work around bootstrap issue.
parent
4e5c5b34f5
commit
0d346a0268
|
@ -26,8 +26,4 @@ HELP: MEMO:
|
||||||
{ $values { "word" "a new word to define" } { "definition" "a word definition" } }
|
{ $values { "word" "a new word to define" } { "definition" "a word definition" } }
|
||||||
{ $description "Defines the given word at parse time as one which memoizes its output given a particular input. The stack effect is mandatory." } ;
|
{ $description "Defines the given word at parse time as one which memoizes its output given a particular input. The stack effect is mandatory." } ;
|
||||||
|
|
||||||
HELP: MEMO[
|
|
||||||
{ $syntax "MEMO[ elements... ]" }
|
|
||||||
{ $description "Defines the given literal quotation as one which memoizes its outputs given a particular input." } ;
|
|
||||||
|
|
||||||
{ define-memoized POSTPONE: MEMO: } related-words
|
{ define-memoized POSTPONE: MEMO: } related-words
|
||||||
|
|
|
@ -1,8 +1,7 @@
|
||||||
! Copyright (C) 2007, 2009 Slava Pestov, Daniel Ehrenberg.
|
! Copyright (C) 2007, 2009 Slava Pestov, Daniel Ehrenberg.
|
||||||
! See http://factorcode.org/license.txt for BSD license.
|
! See http://factorcode.org/license.txt for BSD license.
|
||||||
USING: calendar math math.order kernel memoize tools.test parser
|
USING: math kernel memoize tools.test parser generalizations
|
||||||
generalizations prettyprint io.streams.string sequences eval
|
prettyprint io.streams.string sequences eval namespaces see ;
|
||||||
namespaces see threads tools.time ;
|
|
||||||
IN: memoize.tests
|
IN: memoize.tests
|
||||||
|
|
||||||
MEMO: fib ( m -- n )
|
MEMO: fib ( m -- n )
|
||||||
|
@ -34,9 +33,3 @@ unit-test
|
||||||
[ sq ] ( a -- b ) memoize-quot "q" set
|
[ sq ] ( a -- b ) memoize-quot "q" set
|
||||||
|
|
||||||
[ 9 ] [ 3 "q" get call ] unit-test
|
[ 9 ] [ 3 "q" get call ] unit-test
|
||||||
|
|
||||||
[ t ] [
|
|
||||||
{ 1/8 1/8 1/8 1/8 1/16 1/16 1/16 }
|
|
||||||
[ MEMO[ seconds sleep ] each ] benchmark
|
|
||||||
0.18e9 0.25e9 between?
|
|
||||||
] unit-test
|
|
||||||
|
|
|
@ -2,8 +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 hashtables.identity
|
definitions quotations summary accessors fry hashtables.identity ;
|
||||||
stack-checker ;
|
|
||||||
IN: memoize
|
IN: memoize
|
||||||
|
|
||||||
<PRIVATE
|
<PRIVATE
|
||||||
|
@ -82,5 +81,3 @@ M: memoized reset-word
|
||||||
[ stack-effect in>> packer call ] [ "memoize" word-prop delete-at ] bi ;
|
[ stack-effect in>> packer call ] [ "memoize" word-prop delete-at ] bi ;
|
||||||
|
|
||||||
\ invalidate-memoized t "no-compile" set-word-prop
|
\ invalidate-memoized t "no-compile" set-word-prop
|
||||||
|
|
||||||
SYNTAX: MEMO[ parse-quotation dup infer memoize-quot suffix! ;
|
|
||||||
|
|
|
@ -0,0 +1,6 @@
|
||||||
|
|
||||||
|
USING: help.markup help.syntax memoize.syntax ;
|
||||||
|
|
||||||
|
HELP: MEMO[
|
||||||
|
{ $syntax "MEMO[ elements... ]" }
|
||||||
|
{ $description "Defines the given literal quotation as one which memoizes its outputs given a particular input." } ;
|
|
@ -0,0 +1,10 @@
|
||||||
|
USING: calendar math.order memoize.syntax sequences threads
|
||||||
|
tools.test tools.time ;
|
||||||
|
|
||||||
|
IN: memoize.syntax.tests
|
||||||
|
|
||||||
|
[ t ] [
|
||||||
|
{ 1/8 1/8 1/8 1/8 1/16 1/16 1/16 }
|
||||||
|
[ MEMO[ seconds sleep ] each ] benchmark
|
||||||
|
0.18e9 0.25e9 between?
|
||||||
|
] unit-test
|
|
@ -0,0 +1,6 @@
|
||||||
|
USING: kernel memoize parser sequences stack-checker ;
|
||||||
|
|
||||||
|
IN: memoize.syntax
|
||||||
|
|
||||||
|
SYNTAX: MEMO[ parse-quotation dup infer memoize-quot suffix! ;
|
||||||
|
|
Loading…
Reference in New Issue