limit weirdness



This is OK (I guess)

  (%i1) limit(true);
  (%o1) true

but limit(false) is weird:

  (%i2) limit(false);
  (%o2) lim(false,FOO,0)

No doubt, limit(?foo) is buggy:

  (%i3) limit(?foo);
  (%o3) 0

Actually, limit(true) is weird, but unlike limit(false),
something cleans up the mess that limit makes:

(%i4) :lisp(trace $limit);
($LIMIT)
(%i4) limit(true);
  1> ($LIMIT T)
    2> ($LIMIT T FOO 0 $PLUS)
    <2 ($LIMIT ((%LIMIT) T FOO 0 $PLUS))
    2> ($LIMIT T FOO 0 $MINUS)
    <2 ($LIMIT ((%LIMIT) T FOO 0 $MINUS))
  <1 ($LIMIT ((%LIMIT) T FOO 0))
(%o4) true

How did ((%limit) t foo 0) get changed to $true?

Barton