diff --git a/basis/memoize/memoize.factor b/basis/memoize/memoize.factor index a1d4da62dc..7f62a8c161 100644 --- a/basis/memoize/memoize.factor +++ b/basis/memoize/memoize.factor @@ -1,8 +1,8 @@ ! Copyright (C) 2007, 2010 Slava Pestov, Daniel Ehrenberg. ! See http://factorcode.org/license.txt for BSD license. -USING: kernel hashtables sequences sequences.private arrays -words namespaces make parser effects.parser math assocs effects -definitions quotations summary accessors fry hashtables.identity ; +USING: accessors arrays assocs combinators definitions effects +effects.parser fry hashtables.identity kernel math sequences +sequences.private words ; IN: memoize > [ packer compose '[ _ _ cache ] ] keep + unpacker compose ; + : make/0 ( table quot effect -- quot ) out>> [ packer '[ @@ -50,7 +54,11 @@ IN: memoize ] keep unpacker compose ; : make-memoizer ( table quot effect -- quot ) - dup in>> length zero? [ make/0 ] [ make/n ] if ; + dup in>> length { + { 0 [ make/0 ] } + { 1 [ make/1 ] } + [ drop make/n ] + } case ; PRIVATE>