diff --git a/books/bookvol5.pamphlet b/books/bookvol5.pamphlet
index fd5bb63..2f3aff1 100644
--- a/books/bookvol5.pamphlet
+++ b/books/bookvol5.pamphlet
@@ -23498,7 +23498,7 @@ explanations see the list structure section \ref{Theliststructure}.
(dolist (setdata settree)
(case (fourth setdata)
(function
- (if (functionp (fifth setdata))
+ (if (canFuncall? (fifth setdata))
(funcall (fifth setdata) '|%initialize%|)
(|sayMSG| (concatenate 'string " Function not implemented. "
(package-name *package*) ":" (string (fifth setdata))))))
@@ -23609,7 +23609,7 @@ explanations see the list structure section \ref{Theliststructure}.
(case (fourth setdata)
(function
(terpri)
- (if (functionp (fifth setdata))
+ (if (canFuncall? (fifth setdata))
(funcall (fifth setdata) '|%describe%|)
(|sayMSG| " Function not implemented.")))
(integer
@@ -23686,7 +23686,7 @@ explanations see the list structure section \ref{Theliststructure}.
(case (fourth setdata)
(function
(setq opt
- (if (functionp (fifth setdata))
+ (if (canFuncall? (fifth setdata))
(funcall (fifth setdata) '|%display%|)
"unimplemented"))
(cond
@@ -30093,7 +30093,7 @@ printLoadMessages, which gets called with \verb|%describe%|
(if (eq (elt l 1) 'default)
'|%initialize%|
(kdr l)))
- (if (functionp (fifth setdata))
+ (if (canFuncall? (fifth setdata))
(funcall (fifth setdata) setfunarg)
(|sayMSG| (concatenate 'string " Function not implemented. "
(string (fifth setdata)))))
@@ -39082,10 +39082,13 @@ Note that this assumes ``table'' is a string.
\end{chunk}
-\defun{functionp}{functionp}
-\calls{functionp}{identp}
-\begin{chunk}{defun functionp}
-(defun |functionp| (fn)
+This function was called \verb?|functionp|? which is a lower-case
+version of the common lisp function called functionp. Camm Maguire
+found a bug related to this ambiguity so this was renamed.
+
+\defun{canFuncall?}{canFuncall?}
+\begin{chunk}{defun canFuncall?}
+(defun canFuncall? (fn)
(if (identp fn)
(and (fboundp fn) (not (macro-function fn)))
(functionp fn)))
@@ -53683,6 +53686,7 @@ digits in TechExplorer. Since Saturn is gone we can remove it.
\getchunk{defun buttonNames}
\getchunk{defun cacheKeyedMsg}
+\getchunk{defun canFuncall?}
\getchunk{defun categoryOpen}
\getchunk{defun changeHistListLen}
\getchunk{defun changeToNamedInterpreterFrame}
@@ -53871,7 +53875,6 @@ digits in TechExplorer. Since Saturn is gone we can remove it.
\getchunk{defun frame}
\getchunk{defun frameEnvironment}
\getchunk{defun frameSpad2Cmd}
-\getchunk{defun functionp}
\getchunk{defun funfind,LAM}
\getchunk{defun gatherGlossLines}
diff --git a/books/bookvol9.pamphlet b/books/bookvol9.pamphlet
index 919a824..e7f754a 100644
--- a/books/bookvol9.pamphlet
+++ b/books/bookvol9.pamphlet
@@ -5033,7 +5033,7 @@ of the symbol being parsed. The original list read:
\defun{loadLibIfNecessary}{loadLibIfNecessary}
\calls{loadLibIfNecessary}{loadLibIfNecessary}
-\calls{loadLibIfNecessary}{functionp}
+\calls{loadLibIfNecessary}{canFuncall?}
\calls{loadLibIfNecessary}{macrop}
\calls{loadLibIfNecessary}{getl}
\calls{loadLibIfNecessary}{loadLib}
@@ -5055,7 +5055,7 @@ of the symbol being parsed. The original list read:
(t
(setq value
(cond
- ((or (|functionp| u) (|macrop| u)) u)
+ ((or (canFuncall? u) (|macrop| u)) u)
((getl u 'loaded) u)
((|loadLib| u) u)))
(cond
diff --git a/changelog b/changelog
index f6eef17..5b98fe5 100644
--- a/changelog
+++ b/changelog
@@ -1,3 +1,11 @@
+20140629 c1m src/axiom-website/patches.html 20140629.01.c1m.patch
+20140629 c1m books/bookvol5 functionp -> canFuncall?
+20140629 c1m books/bookvol9 functionp -> canFuncall?
+20140629 c1m src/interp/g-util.lisp functionp -> canFuncall?
+20140629 c1m src/interp/i-coerce.lisp functionp -> canFuncall?
+20140629 c1m src/interp/i-spec2.lisp. functionp -> canFuncall?
+20140629 c1m src/interp/interp-proclaims.lisp functionp -> canFuncall?
+20140629 c1m src/interp/util.lisp functionp -> canFuncall?
20140628 tpd src/axiom-website/patches.html 20140628.02.tpd.patch
20140628 tpd src/input/dbtest.input remove failing input file
20140628 tpd src/axiom-website/patches.html 20140628.01.tpd.patch
diff --git a/patch b/patch
index c8de758..97ef407 100644
--- a/patch
+++ b/patch
@@ -1,4 +1,8 @@
-src/input/dbtest.input.pamphlet remove failing input file
+books/bookvol5, books/bookvol9, src/interp/* functionp -> canFuncall?
-This input file mixes hypertex and latex syntax in complex ways.
-As a result it fails to be properly formatted. It has been removed.
+Axiom has a function, originally in BOOT, called functionp.
+BOOT is case sensitive so this function is called |functionp| in lisp.
+Lisp uppercases symbols so functionp becomes FUNCTIONP.
+
+This led to a subtle failing change, found by Camm Maguire.
+The BOOT-derived function is now called canFuncall?
diff --git a/src/axiom-website/patches.html b/src/axiom-website/patches.html
index 987e7d9..f7aadb7 100644
--- a/src/axiom-website/patches.html
+++ b/src/axiom-website/patches.html
@@ -4502,6 +4502,8 @@ Makefile.pamphlet src/Makefile.pamphlet use chunk syntax
zips/noweb-2.10a.tgz deleted, noweb removed
20140628.02.tpd.patch
src/input/dbtest.input remove failing input file
+20140629.01.c1m.patch
+functionp -> canFuncall?