I am running into a problem with memoized functions in ClojureScript.
Functions which take a single argument work okay but functions of two
args throw an error.

I haven't been able to isolate the bug (I am able to hash vectors and
nested vectors just fine). Any hints on the root cause or workarounds
is greatly appreciated.

Repl transcript follows.

> ~/tools/clojurescript/script/repljs
"Type: " :cljs/quit " to quit"
ClojureScript:cljs.user> (defn foo [a] a)
#<
function foo(a) {
    return a;
}
>
ClojureScript:cljs.user> (defn bar [a b] [a b])
#<
function bar(a, b) {
    return cljs.core.Vector.fromArray([a, b]);
}
>
ClojureScript:cljs.user> (def foo-m (memoize foo))
#<
function (var_args) {
    var args = null;
    if (goog.isDef(var_args)) {
        args =
cljs.core.array_seq(Array.prototype.slice.call(arguments, 0), 0);
    }
    return G__4512__delegate.call(this, args);
}
>
ClojureScript:cljs.user> (def bar-m (memoize bar))
#<
function (var_args) {
    var args = null;
    if (goog.isDef(var_args)) {
        args =
cljs.core.array_seq(Array.prototype.slice.call(arguments, 0), 0);
    }
    return G__4512__delegate.call(this, args);
}
>
ClojureScript:cljs.user> (foo 1)
1
ClojureScript:cljs.user> (foo-m 1)
1
ClojureScript:cljs.user> (bar 1 2)
[1 2]
ClojureScript:cljs.user>
(bar-m 1 2)
"Error evaluating:" (bar-m 1 2) :as "cljs.user.bar_m.call(null,1,2);
\n"
org.mozilla.javascript.JavaScriptException: Error: Index out of bounds
(cljs/core.cljs#974)
        at cljs/core.cljs:974 (anonymous)
        at cljs/core.cljs:991 (anonymous)
        at cljs/core.cljs:115 (anonymous)
        at cljs/core.cljs:161 (anonymous)
        at cljs/core.cljs:319 (anonymous)
        at cljs/core.cljs:338 (anonymous)
        at cljs/core.cljs:307 (anonymous)
        at cljs/core.cljs:314 (anonymous)
        at cljs/core.cljs:181 (anonymous)
        at cljs/core.cljs:204 (anonymous)
        at cljs/core.cljs:733 (anonymous)
        at cljs/core.cljs:740 (anonymous)
        at cljs/core.cljs:1035 (hash_coll)
        at cljs/core.cljs:296 (anonymous)
        at cljs/core.cljs:158 (_hash)
        at cljs/core.cljs:525 (hash)
        at cljs/core.cljs:2167 (anonymous)
        at cljs/core.cljs:148 (_assoc)
        at cljs/core.cljs:472 (anonymous)
        at cljs/core.cljs:519 (anonymous)
        at cljs/core.cljs:2191 (anonymous)
        at cljs/core.cljs:2207 (anonymous)
        at cljs/core.cljs:2100 (anonymous)
        at cljs/core.cljs:148 (_assoc)
        at cljs/core.cljs:472 (anonymous)
        at cljs/core.cljs:519 (anonymous)
        at cljs/core.cljs:2841 (anonymous)
        at cljs/core.cljs:2878 (anonymous)
        at cljs/core.cljs:3013 (anonymous)
        at cljs/core.cljs:3022 (anonymous)
        at <cljs repl>:9 (anonymous)
        at <cljs repl>:9

nil
ClojureScript:cljs.user>

-- 
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en

Reply via email to