memoize: moving MEMO[ to memoize.syntax to work around bootstrap issue.

db4
John Benediktsson 2012-05-04 22:24:21 -07:00
parent 4e5c5b34f5
commit 0d346a0268
6 changed files with 25 additions and 17 deletions

View File

@ -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

View File

@ -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

View File

@ -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! ;

View File

@ -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." } ;

View File

@ -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

View File

@ -0,0 +1,6 @@
USING: kernel memoize parser sequences stack-checker ;
IN: memoize.syntax
SYNTAX: MEMO[ parse-quotation dup infer memoize-quot suffix! ;