On file , line 53


reads

    set newfactorial [lindex $$factorial end]

with two $$ on the "factorial" variable. While the code works because the element 0 (which becomes "$1" instead of "1") is never returned, this code path causes the list of cached factorials shimmer to a string and again to a list on every invocation. The obvious solution is to remove the extra "$".