From c641a62755b95d60078ead5b22bb1d736bbb0048 Mon Sep 17 00:00:00 2001 From: John Benediktsson Date: Tue, 4 Apr 2023 13:52:56 -0700 Subject: [PATCH] memoize: fix memoization of no-arg words --- core/memoize/memoize-tests.factor | 16 +++++++++++++++- core/memoize/memoize.factor | 2 +- 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/core/memoize/memoize-tests.factor b/core/memoize/memoize-tests.factor index f67c7ac284..8125f1237c 100644 --- a/core/memoize/memoize-tests.factor +++ b/core/memoize/memoize-tests.factor @@ -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 diff --git a/core/memoize/memoize.factor b/core/memoize/memoize.factor index d5a09e3ab8..96e5952ca9 100644 --- a/core/memoize/memoize.factor +++ b/core/memoize/memoize.factor @@ -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 ) -- 2.34.1