Function: calc-explain-why
calc-explain-why is an autoloaded and byte-compiled function defined
in calc-stuff.el.gz.
Signature
(calc-explain-why WHY &optional MORE)
Source Code
;; Defined in /usr/src/emacs/lisp/calc/calc-stuff.el.gz
(defun calc-explain-why (why &optional more)
(if (eq (car why) '*)
(setq why (cdr why)))
(let* ((pred (car why))
(arg (nth 1 why))
(msg (cond ((not pred) "Wrong type of argument")
((stringp pred) pred)
((eq pred 'integerp) "Integer expected")
((eq pred 'natnump)
(if (and arg (Math-objvecp arg) (not (Math-integerp arg)))
"Integer expected"
"Nonnegative integer expected"))
((eq pred 'posintp)
(if (and arg (Math-objvecp arg) (not (Math-integerp arg)))
"Integer expected"
"Positive integer expected"))
((eq pred 'fixnump)
(if (and arg (Math-integerp arg))
"Small integer expected"
"Integer expected"))
((eq pred 'fixnatnump)
(if (and arg (Math-natnump arg))
"Small integer expected"
(if (and arg (Math-objvecp arg)
(not (Math-integerp arg)))
"Integer expected"
"Nonnegative integer expected")))
((eq pred 'fixposintp)
(if (and arg (Math-integerp arg) (Math-posp arg))
"Small integer expected"
(if (and arg (Math-objvecp arg)
(not (Math-integerp arg)))
"Integer expected"
"Positive integer expected")))
((eq pred 'posp) "Positive number expected")
((eq pred 'negp) "Negative number expected")
((eq pred 'nonzerop) "Nonzero number expected")
((eq pred 'realp) "Real number expected")
((eq pred 'anglep) "Real number expected")
((eq pred 'hmsp) "HMS form expected")
((eq pred 'datep)
(if (and arg (Math-objectp arg)
(not (Math-realp arg)))
"Real number or date form expected"
"Date form expected"))
((eq pred 'numberp) "Number expected")
((eq pred 'scalarp) "Number expected")
((eq pred 'vectorp) "Vector or matrix expected")
((eq pred 'numvecp) "Number or vector expected")
((eq pred 'matrixp) "Matrix expected")
((eq pred 'square-matrixp)
(if (and arg (math-matrixp arg))
"Square matrix expected"
"Matrix expected"))
((eq pred 'objectp) "Number expected")
((eq pred 'constp) "Constant expected")
((eq pred 'range) "Argument out of range")
(t (format "%s expected" pred))))
(punc ": ")
(calc-can-abbrev-vectors t))
(while (setq why (cdr why))
(and (car why)
(setq msg (concat msg punc (if (stringp (car why))
(car why)
(math-format-flat-expr (car why) 0)))
punc ", ")))
(message "%s%s" msg (if more " [w=more]" ""))))