|
From: Kris K. <kat...@gm...> - 2018-05-30 19:21:10
|
On Wed, May 30, 2018 at 09:12:23AM -0700, Richard Fateman wrote: > errset is from Maclisp, not common lisp, so I guess it is ok to extend it in > a compatible fashion. > while returning multiple values is sometimes useful, it's not > something that Maxima user-accessible functions use. (Else > we would have to be able to display them!) It's true that Maxima has no user-level mechanism for manipulating multiple values, but Maxima does actually hand users functions that return multiple (lisp) values. This is usually transparent though. The bug I'm fixing is #3247. Rules created by defrule return multiple values that apply1 and friends need to see in order to tell whether or not the rule hits. The problem is that tracing or timing rules causes them to no longer work correctly because multiple values aren't currently getting propagated by the "shadow" function. (Of course, tracing or timing any function returning multiple values causes problems. It's not just specific to rules.) errset is one reason why this doesn't work (there are others). I decided that generalizing errset is probably more useful than just rewriting one part specific to the trace stuff. You may ask why users would want to trace or time rules, or maybe we can just tell them not to. But the documentation says that rules can be treated as functions, so it seems reasonable to want to trace or time them and have them still work correctly. Cheers, Kris Katterjohn |