]> gitweb.factorcode.org Git - factor.git/commitdiff
memoize: fix memoization of no-arg words
authorJohn Benediktsson <mrjbq7@gmail.com>
Tue, 4 Apr 2023 20:52:56 +0000 (13:52 -0700)
committerJohn Benediktsson <mrjbq7@gmail.com>
Tue, 4 Apr 2023 20:52:56 +0000 (13:52 -0700)
core/memoize/memoize-tests.factor
core/memoize/memoize.factor

index f67c7ac28478a2978f959ea6aa9459f23b5d4126..8125f1237c295ef1f38a8f55cf75f5c887955b75 100644 (file)
@@ -25,7 +25,6 @@ MEMO: see-test ( a -- b ) reverse ;
 { "USING: sequences ;\nIN: memoize.tests\nMEMO: see-test ( a -- b ) reverse ;\n" }
 [ [ \ see-test see ] with-string-writer ]
 unit-test
-
 { } [ "IN: memoize.tests : fib ( -- ) ;" eval( -- ) ] unit-test
 
 { "IN: memoize.tests\n: fib ( -- ) ;\n" } [ [ \ fib see ] with-string-writer ] unit-test
@@ -33,3 +32,18 @@ unit-test
 [ sq ] ( a -- b ) memoize-quot "q" set
 
 { 9 } [ 3 "q" get call ] unit-test
+
+SYMBOL: foo-counter
+0 foo-counter set-global
+
+MEMO: foo ( -- ) foo-counter counter drop ;
+
+[ 0 1 1 1 ] [
+    foo-counter get-global
+    foo
+    foo-counter get-global
+    foo
+    foo-counter get-global
+    foo
+    foo-counter get-global
+] unit-test
index d5a09e3ab8c9479d8d97578d50d3e90f229965a1..96e5952ca9c74661ed22253852b47695e6ff996d 100644 (file)
@@ -23,7 +23,7 @@ IN: memoize
 
 : packer ( seq -- quot )
     length dup 4 <=
-    [ { [ f ] [ ] [ 2array ] [ 3array ] [ 4array ] } nth ]
+    [ { [ t ] [ ] [ 2array ] [ 3array ] [ 4array ] } nth ]
     [ { } [nsequence] ] if ;
 
 : unpacker ( seq -- quot )