aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/interp/i-analy.boot (renamed from src/interp/i-analy.boot.pamphlet)22
-rw-r--r--src/interp/i-code.boot (renamed from src/interp/i-code.boot.pamphlet)22
-rw-r--r--src/interp/i-coerce.boot (renamed from src/interp/i-coerce.boot.pamphlet)91
-rw-r--r--src/interp/i-coerfn.boot (renamed from src/interp/i-coerfn.boot.pamphlet)88
-rw-r--r--src/interp/i-eval.boot (renamed from src/interp/i-eval.boot.pamphlet)22
-rw-r--r--src/interp/i-funsel.boot (renamed from src/interp/i-funsel.boot.pamphlet)637
-rw-r--r--src/interp/i-intern.boot (renamed from src/interp/i-intern.boot.pamphlet)23
-rw-r--r--src/interp/i-map.boot (renamed from src/interp/i-map.boot.pamphlet)26
-rw-r--r--src/interp/i-resolv.boot (renamed from src/interp/i-resolv.boot.pamphlet)63
-rw-r--r--src/interp/i-spec1.boot (renamed from src/interp/i-spec1.boot.pamphlet)65
-rw-r--r--src/interp/i-spec2.boot (renamed from src/interp/i-spec2.boot.pamphlet)65
-rw-r--r--src/interp/i-syscmd.boot (renamed from src/interp/i-syscmd.boot.pamphlet)142
-rw-r--r--src/interp/i-toplev.boot (renamed from src/interp/i-toplev.boot.pamphlet)28
-rw-r--r--src/interp/i-util.boot (renamed from src/interp/i-util.boot.pamphlet)34
14 files changed, 340 insertions, 988 deletions
diff --git a/src/interp/i-analy.boot.pamphlet b/src/interp/i-analy.boot
index b89b1df8..5b1997b2 100644
--- a/src/interp/i-analy.boot.pamphlet
+++ b/src/interp/i-analy.boot
@@ -1,16 +1,3 @@
-\documentclass{article}
-\usepackage{axiom}
-\begin{document}
-\title{\$SPAD/src/interp i-analy.boot}
-\author{The Axiom Team}
-\maketitle
-\begin{abstract}
-\end{abstract}
-\eject
-\tableofcontents
-\eject
-\section{License}
-<<license>>=
-- Copyright (c) 1991-2002, The Numerical ALgorithms Group Ltd.
-- All rights reserved.
--
@@ -42,9 +29,6 @@
-- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-@
-<<*>>=
-<<license>>
import '"i-object"
)package "BOOT"
@@ -796,9 +780,3 @@ isEltable(op,argl,numArgs) ==
(getUnname arg) ^= 'construct => nil
true
-@
-\eject
-\begin{thebibliography}{99}
-\bibitem{1} nothing
-\end{thebibliography}
-\end{document}
diff --git a/src/interp/i-code.boot.pamphlet b/src/interp/i-code.boot
index e014e55b..080e0dc0 100644
--- a/src/interp/i-code.boot.pamphlet
+++ b/src/interp/i-code.boot
@@ -1,16 +1,3 @@
-\documentclass{article}
-\usepackage{axiom}
-\begin{document}
-\title{\$SPAD/src/interp i-code.boot}
-\author{The Axiom Team}
-\maketitle
-\begin{abstract}
-\end{abstract}
-\eject
-\tableofcontents
-\eject
-\section{License}
-<<license>>=
-- Copyright (c) 1991-2002, The Numerical ALgorithms Group Ltd.
-- All rights reserved.
--
@@ -42,9 +29,6 @@
-- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-@
-<<*>>=
-<<license>>
import '"i-object"
)package "BOOT"
@@ -159,9 +143,3 @@ wrapMapBodyWithCatch body ==
keyedSystemError("S2GE0016",['"wrapMapBodyWithCatch",
'"bad CATCH for in function form"])
else ['CATCH,MKQ mapCatchName $mapName,body]
-@
-\eject
-\begin{thebibliography}{99}
-\bibitem{1} nothing
-\end{thebibliography}
-\end{document}
diff --git a/src/interp/i-coerce.boot.pamphlet b/src/interp/i-coerce.boot
index b488ce9d..9a44c578 100644
--- a/src/interp/i-coerce.boot.pamphlet
+++ b/src/interp/i-coerce.boot
@@ -1,71 +1,3 @@
-\documentclass{article}
-\usepackage{axiom}
-
-\title{\File{src/interp/i-coerce.boot} Pamphlet}
-\author{The Axiom Team}
-
-\begin{document}
-\maketitle
-\begin{abstract}
-\end{abstract}
-\eject
-\tableofcontents
-\eject
-
-\section{Coercion conventions}
-
-\begin{verbatim}
-Coercion conventions
-
-Coercion involves the changing of the datatype of an object. This
- can be done for conformality of operations or, for example, to
- change the structure of an object into one that is understood by
- the printing routines.
-
-The actual coercion is controlled by the function "coerce" which
- takes and delivers wrapped operands. Also see the functions
- interpCoerce and coerceInteractive.
-
-Sometimes one does not want to actually change the datatype but
- rather wants to determine whether it is possible to do so. The
- controlling function to do this is "canCoerceFrom". The value
- passed to specific coercion routines in this case is
- "$fromCoerceable$". The value returned is true or false. See
- specific examples for more info.
-
-The special routines that do the coercions typically involve a "2"
- in their names. For example, G2E converts type "Gaussian" to
- type "Expression". These special routines take and deliver
- unwrapped operands. The determination of which special routine
- to use is often made by consulting the list $CoerceTable
- (currently in COT BOOT) and this is controlled by coerceByTable.
- Note that the special routines are in the file COERCEFN BOOT.
-\end{verbatim}
-\section{Function getConstantFromDomain}
-[[getConstantFromDomain]] is used to look up the constants $0$ and $1$
-from the given [[domainForm]].
-\begin{enumerate}
-\item if [[isPartialMode]] (see i-funsel.boot) returns true then the
-domain modemap contains the constant [[$EmptyMode]] which indicates
-that the domain is not fully formed. In this case we return [[NIL]].
-\end{enumerate}
-<<getConstantFromDomain>>=
-getConstantFromDomain(form,domainForm) ==
- isPartialMode domainForm => NIL
- opAlist := getOperationAlistFromLisplib first domainForm
- key := opOf form
- entryList := LASSOC(key,opAlist)
- entryList isnt [[sig, ., ., .]] =>
- key = "One" => getConstantFromDomain(["1"], domainForm)
- key = "Zero" => getConstantFromDomain(["0"], domainForm)
- throwKeyedMsg("S2IC0008",[form,domainForm])
- -- i.e., there should be exactly one item under this key of that form
- domain := evalDomain domainForm
- SPADCALL compiledLookupCheck(key,sig,domain)
-
-@
-\section{License}
-<<license>>=
-- Copyright (c) 1991-2002, The Numerical ALgorithms Group Ltd.
-- All rights reserved.
--
@@ -97,9 +29,6 @@ getConstantFromDomain(form,domainForm) ==
-- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-@
-<<*>>=
-<<license>>
import '"i-analy"
import '"i-resolv"
@@ -398,7 +327,19 @@ constantInDomain?(form,domainForm) ==
key = "Zero" => constantInDomain?(["0"], domainForm)
false
-<<getConstantFromDomain>>
+getConstantFromDomain(form,domainForm) ==
+ isPartialMode domainForm => NIL
+ opAlist := getOperationAlistFromLisplib first domainForm
+ key := opOf form
+ entryList := LASSOC(key,opAlist)
+ entryList isnt [[sig, ., ., .]] =>
+ key = "One" => getConstantFromDomain(["1"], domainForm)
+ key = "Zero" => getConstantFromDomain(["0"], domainForm)
+ throwKeyedMsg("S2IC0008",[form,domainForm])
+ -- i.e., there should be exactly one item under this key of that form
+ domain := evalDomain domainForm
+ SPADCALL compiledLookupCheck(key,sig,domain)
+
domainOne(domain) == getConstantFromDomain('(One),domain)
@@ -1434,9 +1375,3 @@ hasCorrectTarget(m,sig is [dc,tar,:.]) ==
tar is ['Union,t,'failed] => t=m
tar is ['Union,'failed,t] and t=m
-@
-\eject
-\begin{thebibliography}{99}
-\bibitem{1} nothing
-\end{thebibliography}
-\end{document}
diff --git a/src/interp/i-coerfn.boot.pamphlet b/src/interp/i-coerfn.boot
index 24f14bf5..47e8ddf7 100644
--- a/src/interp/i-coerfn.boot.pamphlet
+++ b/src/interp/i-coerfn.boot
@@ -1,82 +1,3 @@
-\documentclass{article}
-\usepackage{axiom}
-
-\title{\File{src/interp/i-coerfn.boot} Pamphlet}
-\author{The Axiom Team}
-
-\begin{document}
-\maketitle
-\begin{abstract}
-\end{abstract}
-\eject
-\tableofcontents
-\eject
-
-\begin{verbatim}
-Special coercion routines
-
-This is the newly revised set of coercion functions to work with
-the new library and the new runtime system.
-
-coerceByTable is driven off $CoerceTable which is used to match
-the top-level constructors of the source and object types. The
-form of $CoerceTable is an alist where the "properties" are the
-source top-level constructors and the values are triples
- target-domain coercion-type function
-where target-domain is the top-level constructor of the target,
-coercion-type is one of 'total, 'partial or 'indeterm, and
-function is the name of the function to call to handle the
-coercion. coercion-type is used by canCoerce and friends: 'total
-means that a coercion can definitely be performed, 'partial means
-that one cannot tell whether a coercion can be performed unless
-you have the actual data (like telling whether a Polynomial Integer
-can be coerced to an Integer: you have to know whether it is a
-constant polynomial), and 'indeterm means that you might be able
-to tell without data, but you need to call the function with the
-argument "$fromCoerceable$" for a response of true or false. As an
-example of this last kind, you may be able to coerce a list to a
-vector but you have to know what the underlying types are. So
-List Integer is coerceable to Vector Integer but List Float is
-not necessarily coerceable to Vector Integer.
-
-The functions always take three arguments:
- value this is the unwrapped source object
- source-type this is the type of the source
- target-type this is the requested type of the target
-For ethical reasons and to avoid eternal damnation, we try to use
-library functions to perform a lot of the structure manipulations.
-However, we sometimes cheat for efficiency reasons, particularly to
-avoid intermediate instantiations.
-
-the following are older comments:
-
-This file contains the special coercion routines that convert from
-one datatype to another in the interpreter. The choice of the
-primary special routine is made by the function coerceByTable. Note
-that not all coercions use these functions, as some are done via SPAD
-algebra code and controlled by the function coerceByFunction. See
-the file COERCE BOOT for more information.
-
-some assumption about the call of commute and embed functions:
-embed functions are called for one level embedding only,
- e.g. I to P I, but not I to P G I
-commute functions are called for two types which differ only in the
- permutation of the two top type constructors
- e.g. G P RN to P G RN, but not G P I to P G RN or
- P[x] G RN to G P RN
-
-all functions in this file should call canCoerce and coerceInt, as
- opposed to canCoerceFrom and coerceInteractive
-
-all these coercion functions have the following result:
-1. if u=$fromCoerceable$, then TRUE or NIL
-2. if the coercion succeeds, the coerced value (this may be NIL)
-3. if the coercion fails, they throw to a catch point in
- coerceByTable
-
-\end{verbatim}
-\section{License}
-<<license>>=
-- Copyright (c) 1991-2002, The Numerical ALgorithms Group Ltd.
-- All rights reserved.
--
@@ -108,9 +29,6 @@ all these coercion functions have the following result:
-- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-@
-<<*>>=
-<<license>>
import '"i-coerce"
)package "BOOT"
@@ -2304,9 +2222,3 @@ SETANDFILEQ($CommuteTable, '( _
)) _
))
-@
-\eject
-\begin{thebibliography}{99}
-\bibitem{1} nothing
-\end{thebibliography}
-\end{document}
diff --git a/src/interp/i-eval.boot.pamphlet b/src/interp/i-eval.boot
index ed05090d..0eb5a136 100644
--- a/src/interp/i-eval.boot.pamphlet
+++ b/src/interp/i-eval.boot
@@ -1,16 +1,3 @@
-\documentclass{article}
-\usepackage{axiom}
-\begin{document}
-\title{\$SPAD/src/interp i-eval.boot}
-\author{The Axiom Team}
-\maketitle
-\begin{abstract}
-\end{abstract}
-\eject
-\tableofcontents
-\eject
-\section{License}
-<<license>>=
-- Copyright (c) 1991-2002, The Numerical ALgorithms Group Ltd.
-- All rights reserved.
--
@@ -42,9 +29,6 @@
-- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-@
-<<*>>=
-<<license>>
import '"i-analy"
)package "BOOT"
@@ -467,9 +451,3 @@ failCheck x ==
-- the alternate polynomial types of Symbols.
-- $localVars: list of local variables in a map body
-- $MapArgumentTypeList: hack for stream compilation
-@
-\eject
-\begin{thebibliography}{99}
-\bibitem{1} nothing
-\end{thebibliography}
-\end{document}
diff --git a/src/interp/i-funsel.boot.pamphlet b/src/interp/i-funsel.boot
index 5f5d4278..ee1202fd 100644
--- a/src/interp/i-funsel.boot.pamphlet
+++ b/src/interp/i-funsel.boot
@@ -1,49 +1,3 @@
-\documentclass{article}
-\usepackage{axiom}
-
-\title{\File{src/interp/i-funsel.boot} Pamphlet}
-\author{The Axiom Team}
-
-\begin{document}
-\maketitle
-\begin{abstract}
-\end{abstract}
-\eject
-\tableofcontents
-\eject
-
-\begin{verbatim}
-New Selection of Modemaps
-
-selection of applicable modemaps is done in two steps:
- first it tries to find a modemap inside an argument domain, and if
- this fails, by evaluation of pattern modemaps
-the result is a list of functions with signatures, which have the
- following form:
- [sig,elt,cond] where
- sig is the signature gained by evaluating the modemap condition
- elt is the slot number to get the implementation
- cond are runtime checks which are the results of evaluating the
- modemap condition
-
-the following flags are used:
- $Coerce is NIL, if function selection is done which requires exact
- matches (e.g. for coercion functions)
- if $SubDom is true, then runtime checks have to be compiled
-\end{verbatim}
-\section{Functions}
-\subsection{isPartialMode}
-[[isPartialMode]] tests whether m contains [[$EmptyMode]]. The
-constant [[$EmptyMode]] (defined in bootfuns.lisp) evaluates to
-[[|$EmptyMode|]]. This constants is inserted in a modemap during
-compile time if the modemap is not yet complete.
-<<isPartialMode>>=
-isPartialMode m ==
- CONTAINED($EmptyMode,m)
-
-@
-\section{License}
-<<license>>=
-- Copyright (c) 1991-2002, The Numerical ALgorithms Group Ltd.
-- All rights reserved.
--
@@ -75,9 +29,6 @@ isPartialMode m ==
-- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-@
-<<*>>=
-<<license>>
import '"i-coerfn"
)package "BOOT"
@@ -94,7 +45,7 @@ sayFunctionSelection(op,args,target,dc,func) ==
'" Arguments:",:bright fsig]
if target then sayMSG concat ['" Target type:",
:bright prefix2String target]
- if dc then sayMSG concat ['" From: ",
+ if dc then sayMSG concat ['" From: ",
:bright prefix2String dc]
stopTimingProcess 'debug
@@ -118,20 +69,20 @@ selectMms(op,args,$declaredMode) ==
-- see if we have a functional parameter
((isSharpVarWithNum(n) and opMode) or (val and opMode)) and
opMode is ['Mapping,:ta] =>
- imp :=
- val => wrapped2Quote objVal val
- n
- [[['local,:ta], imp , NIL]]
+ imp :=
+ val => wrapped2Quote objVal val
+ n
+ [[['local,:ta], imp , NIL]]
((isSharpVarWithNum(n) and opMode) or (val and opMode)) and
opMode is ['Variable,f] =>
- emptyAtree op
- op.0 := f
- selectMms(op,args,$declaredMode)
+ emptyAtree op
+ op.0 := f
+ selectMms(op,args,$declaredMode)
isSharpVarWithNum(n) and opMode is ['FunctionCalled,f] =>
- op.0 := f
- selectMms(op,args,$declaredMode)
+ op.0 := f
+ selectMms(op,args,$declaredMode)
types1 := getOpArgTypes(n,args)
numArgs := #args
@@ -153,8 +104,8 @@ selectMms(op,args,$declaredMode) ==
then
tree := mkAtree objValUnwrap getValue first args
ut :=
- tar => underDomainOf tar
- NIL
+ tar => underDomainOf tar
+ NIL
ua := [underDomainOf x for x in rest types1]
member(NIL,ua) => NIL
putTarget(tree,['Mapping,ut,:ua])
@@ -187,8 +138,8 @@ selectMms(op,args,$declaredMode) ==
if not tar then
tar := defaultTarget(op,n,#types1,types1)
if tar and $reportBottomUpFlag then
- sayMSG concat ['" Default target type:",
- :bright prefix2String tar]
+ sayMSG concat ['" Default target type:",
+ :bright prefix2String tar]
selectLocalMms(op,n,types1,tar) or
(VECTORP op and selectMms1(n,tar,types1,types2,'T))
@@ -209,25 +160,25 @@ selectMms2(op,tar,args1,args2,$Coerce) ==
-- special case map for the time being
$Coerce and (op = 'map) and (2 = nargs) and
(first(args1) is ['Variable,fun]) =>
- null (ud := underDomainOf CADR args1) => NIL
- if tar then ut := underDomainOf(tar)
- else ut := nil
- null (mapMms := selectMms1(fun,ut,[ud],[NIL],true)) => NIL
- mapMm := CDAAR mapMms
- selectMms1(op,tar,[['Mapping,:mapMm],CADR args1],
- [NIL,CADR args2],$Coerce)
+ null (ud := underDomainOf CADR args1) => NIL
+ if tar then ut := underDomainOf(tar)
+ else ut := nil
+ null (mapMms := selectMms1(fun,ut,[ud],[NIL],true)) => NIL
+ mapMm := CDAAR mapMms
+ selectMms1(op,tar,[['Mapping,:mapMm],CADR args1],
+ [NIL,CADR args2],$Coerce)
$Coerce and (op = 'map) and (2 = nargs) and
(first(args1) is ['FunctionCalled,fun]) =>
- null (ud := underDomainOf CADR args1) => NIL
- if tar then ut := underDomainOf(tar)
- else ut := nil
- funNode := mkAtreeNode fun
- transferPropsToNode(fun,funNode)
- null (mapMms := selectLocalMms(funNode,fun,[ud],NIL)) => NIL
- mapMm := CDAAR mapMms
- selectMms1(op,tar,[['Mapping,:mapMm],CADR args1],
- [NIL,CADR args2],$Coerce)
+ null (ud := underDomainOf CADR args1) => NIL
+ if tar then ut := underDomainOf(tar)
+ else ut := nil
+ funNode := mkAtreeNode fun
+ transferPropsToNode(fun,funNode)
+ null (mapMms := selectLocalMms(funNode,fun,[ud],NIL)) => NIL
+ mapMm := CDAAR mapMms
+ selectMms1(op,tar,[['Mapping,:mapMm],CADR args1],
+ [NIL,CADR args2],$Coerce)
-- get the argument domains and the target
a := nil
@@ -244,7 +195,7 @@ selectMms2(op,tar,args1,args2,$Coerce) ==
if xx := underDomainOf(tar) then a := cons(xx,a)
for x in args1 repeat
PAIRP(x) and CAR(x) in '(List Vector Stream FiniteSet Array) =>
- xx := underDomainOf(x) => a := cons(xx,a)
+ xx := underDomainOf(x) => a := cons(xx,a)
-- now extend this list with those from the arguments to
-- any Unions, Mapping or Records
@@ -255,17 +206,17 @@ selectMms2(op,tar,args1,args2,$Coerce) ==
null x => 'iterate
x = '(RationalRadicals) => a' := cons($RationalNumber,a')
x is ['Union,:l] =>
- -- check if we have a tagged union
- l and first l is [":",:.] =>
- for [.,.,t] in l repeat
- a' := cons(t,a')
- a' := append(reverse l,a')
+ -- check if we have a tagged union
+ l and first l is [":",:.] =>
+ for [.,.,t] in l repeat
+ a' := cons(t,a')
+ a' := append(reverse l,a')
x is ['Mapping,:l] => a' := append(reverse l,a')
x is ['Record,:l] =>
- a' := append(reverse [CADDR s for s in l],a')
+ a' := append(reverse [CADDR s for s in l],a')
x is ['FunctionCalled,name] =>
- (xm := get(name,'mode,$e)) and not isPartialMode xm =>
- a' := cons(xm,a')
+ (xm := get(name,'mode,$e)) and not isPartialMode xm =>
+ a' := cons(xm,a')
a := append(a,REMDUP a')
a := [x for x in a | PAIRP(x)]
@@ -278,16 +229,16 @@ selectMms2(op,tar,args1,args2,$Coerce) ==
mmS := append(mmS, findFunctionInDomain(op,x,tar,args1,args2,NIL,NIL))
-- step 2. if we didn't get one, trying coercing (if we are
- -- suppose to)
+ -- suppose to)
if null(mmS) and $Coerce then
a := a'
while a repeat
- x:= CAR a
- a:= CDR a
- ATOM x => 'iterate
- mmS := append(mmS,
- findFunctionInDomain(op,x,tar,args1,args2,$Coerce,NIL))
+ x:= CAR a
+ a:= CDR a
+ ATOM x => 'iterate
+ mmS := append(mmS,
+ findFunctionInDomain(op,x,tar,args1,args2,$Coerce,NIL))
mmS or selectMmsGen(op,tar,args1,args2)
mmS and orderMms(op, mmS,args1,args2,tar)
@@ -305,7 +256,7 @@ defaultTarget(opNode,op,nargs,args) ==
op = 'nil =>
putTarget(opNode, target := '(List (None)))
target
- op = 'true or op = 'false =>
+ op = 'true or op = 'false =>
putTarget(opNode, target := $Boolean)
target
op = 'pi =>
@@ -349,11 +300,11 @@ defaultTarget(opNode,op,nargs,args) ==
(mms := selectLocalMms(symNode,sym,[$DoubleFloat],NIL)) =>
[.,targ,:.] := CAAR mms
targ = $DoubleFloat =>
- putTarget(opNode, target := '(TwoDimensionalViewport))
- target
+ putTarget(opNode, target := '(TwoDimensionalViewport))
+ target
targ = ['Point, $DoubleFloat] =>
- putTarget(opNode, target := '(ThreeDimensionalViewport))
- target
+ putTarget(opNode, target := '(ThreeDimensionalViewport))
+ target
target
target
@@ -373,123 +324,123 @@ defaultTarget(opNode,op,nargs,args) ==
nargs = 2 =>
op = "elt" =>
- a1 = '(BasicOperator) and a2 is ['List, ['OrderedVariableList, .]] =>
- ['Expression, $Integer]
- target
+ a1 = '(BasicOperator) and a2 is ['List, ['OrderedVariableList, .]] =>
+ ['Expression, $Integer]
+ target
op = "eval" =>
- a1 is ['Expression,b1] and a2 is ['Equation, ['Polynomial,b2]] =>
- target :=
- canCoerce(b2, a1) => a1
- t := resolveTT(b1, b2)
- (not t) or (t = $Any) => nil
- resolveTT(a1, t)
- if target then putTarget(opNode, target)
- target
- a1 is ['Equation, .] and a2 is ['Equation, .] =>
- target := resolveTT(a1, a2)
- if target and not (target = $Any) then putTarget(opNode,target)
- else target := nil
- target
- a1 is ['Equation, .] and a2 is ['List, a2e] and a2e is ['Equation, .] =>
- target := resolveTT(a1, a2e)
- if target and not (target = $Any) then putTarget(opNode,target)
- else target := nil
- target
- a2 is ['Equation, a2e] or a2 is ['List, ['Equation, a2e]] =>
- target := resolveTT(a1, a2e)
- if target and not (target = $Any) then putTarget(opNode,target)
- else target := nil
- target
+ a1 is ['Expression,b1] and a2 is ['Equation, ['Polynomial,b2]] =>
+ target :=
+ canCoerce(b2, a1) => a1
+ t := resolveTT(b1, b2)
+ (not t) or (t = $Any) => nil
+ resolveTT(a1, t)
+ if target then putTarget(opNode, target)
+ target
+ a1 is ['Equation, .] and a2 is ['Equation, .] =>
+ target := resolveTT(a1, a2)
+ if target and not (target = $Any) then putTarget(opNode,target)
+ else target := nil
+ target
+ a1 is ['Equation, .] and a2 is ['List, a2e] and a2e is ['Equation, .] =>
+ target := resolveTT(a1, a2e)
+ if target and not (target = $Any) then putTarget(opNode,target)
+ else target := nil
+ target
+ a2 is ['Equation, a2e] or a2 is ['List, ['Equation, a2e]] =>
+ target := resolveTT(a1, a2e)
+ if target and not (target = $Any) then putTarget(opNode,target)
+ else target := nil
+ target
op = "**" or op = "^" =>
a2 = $Integer =>
- if (target := resolveTCat(a1,'(Field))) then
- putTarget(opNode,target)
- target
+ if (target := resolveTCat(a1,'(Field))) then
+ putTarget(opNode,target)
+ target
a1 = '(AlgebraicNumber) and (a2 = $Float or a2 = $DoubleFloat) =>
- target := ['Expression, a2]
- putTarget(opNode,target)
- target
+ target := ['Expression, a2]
+ putTarget(opNode,target)
+ target
a1 = '(AlgebraicNumber) and a2 is ['Complex, a3] and (a3 = $Float or a3 = $DoubleFloat) =>
- target := ['Expression, a3]
- putTarget(opNode,target)
- target
+ target := ['Expression, a3]
+ putTarget(opNode,target)
+ target
((a2 = $RationalNumber) and
- (typeIsASmallInteger(a1) or isEqualOrSubDomain(a1,$Integer))) =>
- putTarget(opNode, target := '(AlgebraicNumber))
- target
+ (typeIsASmallInteger(a1) or isEqualOrSubDomain(a1,$Integer))) =>
+ putTarget(opNode, target := '(AlgebraicNumber))
+ target
((a2 = $RationalNumber) and (isAVariableType(a1)
- or a1 is ['Polynomial,.] or a1 is ['RationalFunction,.])) =>
- putTarget(opNode, target := defaultTargetFE a1)
- target
+ or a1 is ['Polynomial,.] or a1 is ['RationalFunction,.])) =>
+ putTarget(opNode, target := defaultTargetFE a1)
+ target
isAVariableType(a1) and (a2 = $PositiveInteger or a2 = $NonNegativeInteger) =>
- putTarget(opNode, target := '(Polynomial (Integer)))
- target
+ putTarget(opNode, target := '(Polynomial (Integer)))
+ target
isAVariableType(a2) =>
- putTarget(opNode, target := defaultTargetFE a1)
- target
+ putTarget(opNode, target := defaultTargetFE a1)
+ target
a2 is ['Polynomial, D] =>
- (a1 = a2) or isAVariableType(a1)
- or ((a1 is ['RationalFunction, D1]) and (D1 = D)) or (a1 = D)
- or ((a1 is [=$QuotientField, D1]) and (D1 = a1)) =>
- putTarget(opNode, target := defaultTargetFE a2)
- target
- target
+ (a1 = a2) or isAVariableType(a1)
+ or ((a1 is ['RationalFunction, D1]) and (D1 = D)) or (a1 = D)
+ or ((a1 is [=$QuotientField, D1]) and (D1 = a1)) =>
+ putTarget(opNode, target := defaultTargetFE a2)
+ target
+ target
a2 is ['RationalFunction, D] =>
- (a1 = a2) or isAVariableType(a1)
- or ((a1 is ['RationalFunction, D1]) and (D1 = D)) or (a1 = D)
- or ((a1 is [=$QuotientField, D1]) and (D1 = a1)) =>
- putTarget(opNode, target := defaultTargetFE a2)
- target
- target
+ (a1 = a2) or isAVariableType(a1)
+ or ((a1 is ['RationalFunction, D1]) and (D1 = D)) or (a1 = D)
+ or ((a1 is [=$QuotientField, D1]) and (D1 = a1)) =>
+ putTarget(opNode, target := defaultTargetFE a2)
+ target
+ target
target
op = "/" =>
isEqualOrSubDomain(a1, $Integer) and isEqualOrSubDomain(a2, $Integer) =>
- putTarget(opNode, target := $RationalNumber)
- target
+ putTarget(opNode, target := $RationalNumber)
+ target
a1 = a2 =>
- if (target := resolveTCat(CAR args,'(Field))) then
- putTarget(opNode,target)
- target
+ if (target := resolveTCat(CAR args,'(Field))) then
+ putTarget(opNode,target)
+ target
a1 is ['Variable,.] and a2 is ['Variable,.] =>
- putTarget(opNode,target := mkRationalFunction '(Integer))
- target
+ putTarget(opNode,target := mkRationalFunction '(Integer))
+ target
isEqualOrSubDomain(a1,$Integer) and a2 is ['Variable,.] =>
- putTarget(opNode,target := mkRationalFunction '(Integer))
- target
+ putTarget(opNode,target := mkRationalFunction '(Integer))
+ target
a1 is ['Variable,.] and
- a2 is ['Polynomial,D] =>
- putTarget(opNode,target := mkRationalFunction D)
- target
- target
+ a2 is ['Polynomial,D] =>
+ putTarget(opNode,target := mkRationalFunction D)
+ target
+ target
a2 is ['Variable,.] and
- a1 is ['Polynomial,D] =>
- putTarget(opNode,target := mkRationalFunction D)
- target
- target
+ a1 is ['Polynomial,D] =>
+ putTarget(opNode,target := mkRationalFunction D)
+ target
+ target
a2 is ['Polynomial,D] and (a1 = D) =>
- putTarget(opNode,target := mkRationalFunction D)
- target
+ putTarget(opNode,target := mkRationalFunction D)
+ target
target
a3 := CADDR args
nargs = 3 =>
op = "eval" =>
- a3 is ['List, a3e] =>
- target := resolveTT(a1, a3e)
- if not (target = $Any) then putTarget(opNode,target)
- else target := nil
- target
-
- target := resolveTT(a1, a3)
- if not (target = $Any) then putTarget(opNode,target)
- else target := nil
- target
+ a3 is ['List, a3e] =>
+ target := resolveTT(a1, a3e)
+ if not (target = $Any) then putTarget(opNode,target)
+ else target := nil
+ target
+
+ target := resolveTT(a1, a3)
+ if not (target = $Any) then putTarget(opNode,target)
+ else target := nil
+ target
target
-mkRationalFunction D == ['Fraction, ['Polynomial, D]]
+mkRationalFunction D == ['Fraction, ['Polynomial, D]]
defaultTargetFE(a,:options) ==
a is ['Variable,.] or a = $RationalNumber or MEMQ(QCAR a,
@@ -512,7 +463,7 @@ altTypeOf(type,val,$declaredMode) ==
type is ['OrderedVariableList,vl] and
INTEGERP(val1 := objValUnwrap getValue(val)) and
(a := getMinimalVarMode(vl.(val1 - 1),$declaredMode)) =>
- a
+ a
type = $PositiveInteger => $Integer
type = $NonNegativeInteger => $Integer
type = '(List (PositiveInteger)) => '(List (Integer))
@@ -523,10 +474,10 @@ getOpArgTypes(opname, args) ==
[f(a,opname) for a in l] where
f(x,op) ==
x is ['FunctionCalled,g] and op ^= 'name =>
- m := get(g,'mode,$e) =>
- m is ['Mapping,:.] => m
- x
- x
+ m := get(g,'mode,$e) =>
+ m is ['Mapping,:.] => m
+ x
+ x
x
getOpArgTypes1(opname, args) ==
@@ -568,7 +519,7 @@ argCouldBelongToSubdomain(op, nargs) ==
for [sig,cond,:.] in mms repeat
for t in CDDR sig for i in 0..(nargs) repeat
CONTAINEDisDomain(t,cond) =>
- v.i := 1 + v.i
+ v.i := 1 + v.i
v
CONTAINEDisDomain(symbol,cond) ==
@@ -579,7 +530,7 @@ CONTAINEDisDomain(symbol,cond) ==
or/[CONTAINEDisDomain(symbol, u) for u in QCDR cond]
EQ(QCAR cond,'isDomain) =>
EQ(symbol,CADR cond) and PAIRP(dom:=CADDR cond) and
- MEMQ(dom,'(PositiveInteger NonNegativeInteger))
+ MEMQ(dom,'(PositiveInteger NonNegativeInteger))
false
selectDollarMms(dc,name,types1,types2) ==
@@ -627,10 +578,10 @@ getLocalMms(name,types,tar) ==
get(name,'recursive,$e)
acceptableArgs :=
and/[f(b,a,subsume) for a in args for b in types] where
- f(x,y,subsume) ==
- if subsume
- then isEqualOrSubDomain(x,y)
- else x = y
+ f(x,y,subsume) ==
+ if subsume
+ then isEqualOrSubDomain(x,y)
+ else x = y
not acceptableArgs =>
-- interpreted maps are ok
dc = 'interpOnly and not($Coerce)=> mmS := [mm,:mmS]
@@ -664,12 +615,12 @@ mmCost0(name, sig,cond,tar,args1,args2) ==
if args1 then
for x1 in args1 for x2 in args2 for x3 in sigArgs repeat
n := n +
- isEqualOrSubDomain(x1,x3) => 0
- topcon := first deconstructT x1
- topcon2 := first deconstructT x3
- topcon = topcon2 => 3
- CAR topcon2 = 'Mapping => 2
- 4
+ isEqualOrSubDomain(x1,x3) => 0
+ topcon := first deconstructT x1
+ topcon2 := first deconstructT x3
+ topcon = topcon2 => 3
+ CAR topcon2 = 'Mapping => 2
+ 4
else if sigArgs then n := n + 100000000000
res := CADR sig
@@ -691,9 +642,9 @@ orderMms(name, mmS,args1,args2,tar) ==
m < CAAR mS => CONS(p,mS)
S:= mS
until b repeat
- b:= null CDR S or m < CAADR S =>
- RPLACD(S,CONS(p,CDR S))
- S:= CDR S
+ b:= null CDR S or m < CAADR S =>
+ RPLACD(S,CONS(p,CDR S))
+ S:= CDR S
mS
mmS and [CDR p for p in mS]
@@ -762,9 +713,9 @@ findCommonSigInDomain(opName,dom,nargs) ==
vec := NIL
for mm in CDR mmList repeat
nargs = #CAR mm =>
- null vec => vec := LIST2VEC CAR mm
+ null vec => vec := LIST2VEC CAR mm
for i in 0.. for x in CAR mm repeat
- if vec.i and vec.i ^= x then vec.i := NIL
+ if vec.i and vec.i ^= x then vec.i := NIL
VEC2LIST vec
findUniqueOpInDomain(op,opName,dom) ==
@@ -781,7 +732,7 @@ findUniqueOpInDomain(op,opName,dom) ==
fun :=
--+
$genValue =>
- compiledLookupCheck(opName,sig,evalDomain dom)
+ compiledLookupCheck(opName,sig,evalDomain dom)
NRTcompileEvalForm(opName, sig, evalDomain dom)
NULL(fun) or NULL(PAIRP(fun)) => NIL
CAR fun = function(Undef) => throwKeyedMsg("S2IS0023",[opName,dom])
@@ -984,9 +935,9 @@ matchMmSig(mm,tar,args1,args2) ==
if x is ['SubDomain,y,:.] then x:= y
b := isEqualOrSubDomain(x1,x) or
(STRINGP(x) and (x1 is ['Variable,v]) and (x = PNAME v)) or
- $SubDom and isSubDomain(x,x1) => rtc:= 'T
- $Coerce => x2=x or canCoerceFrom(x1,x)
- x1 is ['Variable,:.] and x = '(Symbol)
+ $SubDom and isSubDomain(x,x1) => rtc:= 'T
+ $Coerce => x2=x or canCoerceFrom(x1,x)
+ x1 is ['Variable,:.] and x = '(Symbol)
$RTC:= CONS(rtc,$RTC)
null args1 and null a and b and matchMmSigTar(tar,CAR sig)
@@ -1000,7 +951,7 @@ matchMmSigTar(t1,t2) ==
if b='"failed" then return matchMmSigTar(t1, a)
$Coerce and
isPartialMode t1 => resolveTM(t2,t1)
--- I think this should be true -SCM
+-- I think this should be true -SCM
-- true
canCoerceFrom(t2,t1)
@@ -1038,7 +989,7 @@ filterModemapsFromPackages(mms, names, op) ==
STRPOS(n,name,0,NIL) => found := true
-- hack, hack
(op = 'factor) and member(n,mpolys) and member(name,mpacks) =>
- found := true
+ found := true
if found
then good := cons(mm, good)
else bad := cons(mm,bad)
@@ -1065,11 +1016,11 @@ selectMmsGen(op,tar,args1,args2) ==
if (op = 'map) and (2 = #args1) and
(CAR(args1) is ['Mapping,., elem]) and
(a := isTowerWithSubdomain(CADR args1,elem))
- then args1 := [CAR args1,a]
+ then args1 := [CAR args1,a]
-- we first split the modemaps into two groups:
- -- haves: these are from packages that have one of the top level
- -- constructor names in the package name
+ -- haves: these are from packages that have one of the top level
+ -- constructor names in the package name
-- havenots: everything else
-- get top level constructor names for constructors with parameters
@@ -1100,13 +1051,13 @@ selectMmsGen(op,tar,args1,args2) ==
[havesExact,havesInexact] := exact?(haves,tar,args1)
if $reportBottomUpFlag then
for mm in APPEND(havesExact,havesInexact) for i in 1.. repeat
- sayModemapWithNumber(mm,i)
+ sayModemapWithNumber(mm,i)
if havesExact then
mmS := matchMms(havesExact,op,tar,args1,args2)
if mmS then
- if $reportBottomUpFlag then
- sayMSG '" found an exact match!"
- return mmS
+ if $reportBottomUpFlag then
+ sayMSG '" found an exact match!"
+ return mmS
mmS := matchMms(havesInexact,op,tar,args1,args2)
else if $reportBottomUpFlag then sayMSG '" no modemaps"
mmS => mmS
@@ -1119,13 +1070,13 @@ selectMmsGen(op,tar,args1,args2) ==
[havesNExact,havesNInexact] := exact?(havenots,tar,args1)
if $reportBottomUpFlag then
for mm in APPEND(havesNExact,havesNInexact) for i in 1.. repeat
- sayModemapWithNumber(mm,i)
+ sayModemapWithNumber(mm,i)
if havesNExact then
mmS := matchMms(havesNExact,op,tar,args1,args2)
if mmS then
- if $reportBottomUpFlag then
- sayMSG '" found an exact match!"
- return mmS
+ if $reportBottomUpFlag then
+ sayMSG '" found an exact match!"
+ return mmS
mmS := matchMms(havesNInexact,op,tar,args1,args2)
else if $reportBottomUpFlag then sayMSG '" no modemaps"
mmS
@@ -1136,7 +1087,7 @@ selectMmsGen(op,tar,args1,args2) ==
[c,t,:a] := sig
ok := true
for pat in a for arg in args while ok repeat
- not CONTAINED(['isDomain,pat,arg],mmC) => ok := NIL
+ not CONTAINED(['isDomain,pat,arg],mmC) => ok := NIL
ok => ex := CONS(mm,ex)
inex := CONS(mm,inex)
[ex,inex]
@@ -1145,17 +1096,17 @@ selectMmsGen(op,tar,args1,args2) ==
for [sig,mmC] in mmaps repeat
-- sig is [dc,result,:args]
$Subst :=
- tar and not isPartialMode tar =>
- -- throw in the target if it is not the same as one
- -- of the arguments
- res := CADR sig
- member(res,CDDR sig) => NIL
- [[res,:tar]]
- NIL
+ tar and not isPartialMode tar =>
+ -- throw in the target if it is not the same as one
+ -- of the arguments
+ res := CADR sig
+ member(res,CDDR sig) => NIL
+ [[res,:tar]]
+ NIL
[c,t,:a] := sig
if a then matchTypes(a,args1,args2)
not EQ($Subst,'failed) =>
- mmS := nconc(evalMm(op,tar,sig,mmC),mmS)
+ mmS := nconc(evalMm(op,tar,sig,mmC),mmS)
mmS
matchTypes(pm,args1,args2) ==
@@ -1166,15 +1117,15 @@ matchTypes(pm,args1,args2) ==
p:= ASSQ(v,$Subst) =>
t:= CDR p
t=t1 => $Coerce and EQCAR(t1,'Symbol) and
- (q := ASSQ(v,$SymbolType)) and t2 and
- (t3 := resolveTT(CDR q, t2)) and
- RPLACD(q, t3)
+ (q := ASSQ(v,$SymbolType)) and t2 and
+ (t3 := resolveTT(CDR q, t2)) and
+ RPLACD(q, t3)
$Coerce =>
- if EQCAR(t,'Symbol) and (q := ASSQ(v,$SymbolType)) then
- t := CDR q
- if EQCAR(t1,'Symbol) and t2 then t1:= t2
- t0 := resolveTT(t,t1) => RPLACD(p,t0)
- $Subst:= 'failed
+ if EQCAR(t,'Symbol) and (q := ASSQ(v,$SymbolType)) then
+ t := CDR q
+ if EQCAR(t1,'Symbol) and t2 then t1:= t2
+ t0 := resolveTT(t,t1) => RPLACD(p,t0)
+ $Subst:= 'failed
$Subst:= 'failed
$Subst:= CONS(CONS(v,t1),$Subst)
if EQCAR(t1,'Symbol) and t2 then $SymbolType:= CONS(CONS(v,t2),$SymbolType)
@@ -1191,12 +1142,12 @@ evalMm(op,tar,sig,mmC) ==
SL := fixUpTypeArgs SL
sig:= [subCopy(deepSubCopy(x,SL),$Subst) for x in sig]
not containsVars sig =>
- isFreeFunctionFromMmCond mmC and (m := evalMmFreeFunction(op,tar,sig,mmC)) =>
- mS:= nconc(m,mS)
- "or"/[^isValidType(arg) for arg in sig] => nil
- [dc,t,:args]:= sig
- $Coerce or null tar or tar=t =>
- mS:= nconc(findFunctionInDomain(op,dc,t,args,args,NIL,'T),mS)
+ isFreeFunctionFromMmCond mmC and (m := evalMmFreeFunction(op,tar,sig,mmC)) =>
+ mS:= nconc(m,mS)
+ "or"/[^isValidType(arg) for arg in sig] => nil
+ [dc,t,:args]:= sig
+ $Coerce or null tar or tar=t =>
+ mS:= nconc(findFunctionInDomain(op,dc,t,args,args,NIL,'T),mS)
mS
evalMmFreeFunction(op,tar,sig,mmC) ==
@@ -1252,19 +1203,19 @@ evalMmCond0(op,sig,st) ==
t1:= CDR p1
t:= CDR p
t=t1 or
- containsVars t =>
- if $Coerce and EQCAR(t1,'Symbol) then t1:= getSymbolType CAR p
- resolveTM1(t1,t)
- $Coerce and
- -- if we are looking at the result of a function, the coerce
- -- goes the opposite direction
- (t1 = $AnonymousFunction and t is ['Mapping, :.]) => t
- CAR p = CADR sig and not member(CAR p, CDDR sig) =>
- canCoerceFrom(t,t1) => 'T
- NIL
- canCoerceFrom(t1,t) => 'T
- isSubDomain(t,t1) => RPLACD(p,t1)
- EQCAR(t1,'Symbol) and canCoerceFrom(getSymbolType CAR p,t)
+ containsVars t =>
+ if $Coerce and EQCAR(t1,'Symbol) then t1:= getSymbolType CAR p
+ resolveTM1(t1,t)
+ $Coerce and
+ -- if we are looking at the result of a function, the coerce
+ -- goes the opposite direction
+ (t1 = $AnonymousFunction and t is ['Mapping, :.]) => t
+ CAR p = CADR sig and not member(CAR p, CDDR sig) =>
+ canCoerceFrom(t,t1) => 'T
+ NIL
+ canCoerceFrom(t1,t) => 'T
+ isSubDomain(t,t1) => RPLACD(p,t1)
+ EQCAR(t1,'Symbol) and canCoerceFrom(getSymbolType CAR p,t)
( SL and p1 and not b and 'failed ) or evalMmCat(op,sig,st,SL)
fixUpTypeArgs SL ==
@@ -1304,7 +1255,7 @@ coerceTypeArgs(t1, t2, SL) ==
[makeConstrArg(arg1, arg2, constrArg(c1,csub1,SL),
constrArg(c2,csub2,SL), cs)
for arg1 in args1 for arg2 in args2 for c1 in cs1 for c2 in cs2
- for cs in coSig]]
+ for cs in coSig]]
constrArg(v,sl,SL) ==
x := LASSOC(v,sl) =>
@@ -1351,8 +1302,8 @@ orderMmCatStack st ==
mem := nil
for v in vars while not mem repeat
if MEMQ(v,cat) then
- mem := true
- havevars := cons(s,havevars)
+ mem := true
+ havevars := cons(s,havevars)
if not mem then haventvars := cons(s,haventvars)
null havevars => st
st := nreverse nconc(haventvars,havevars)
@@ -1376,11 +1327,11 @@ evalMmCat(op,sig,stack,SL) ==
for mmC in st repeat
S:= evalMmCat1(mmC,op, SL)
S='failed and $hope =>
- stack:= CONS(mmC,stack)
+ stack:= CONS(mmC,stack)
S = 'failed => return S
not atom S =>
- makingProgress:= 'T
- SL:= mergeSubs(S,SL)
+ makingProgress:= 'T
+ SL:= mergeSubs(S,SL)
if stack or S='failed then 'failed else SL
evalMmCat1(mmC is ['ofCategory,d,c],op, SL) ==
@@ -1398,16 +1349,16 @@ evalMmCat1(mmC is ['ofCategory,d,c],op, SL) ==
-- following is hack to take care of the case where we have a
-- free substitution variable with a category condition on it.
-- This would arise, for example, where a package has an argument
- -- that is not in a needed modemap. After making the following
+ -- that is not in a needed modemap. After making the following
-- dummy substitutions, the package can be instantiated and the
- -- modemap used. RSS 12-22-85
+ -- modemap used. RSS 12-22-85
-- If c is not Set, Ring or Field then the more general mechanism
dom := defaultTypeForCategory(c, SL)
null dom =>
op ^= 'coerce => 'failed -- evalMmCatLastChance(d,c,SL)
null (p := ASSQ(d,$Subst)) =>
dom =>
- NSL := [CONS(d,dom)]
+ NSL := [CONS(d,dom)]
op ^= 'coerce => 'failed -- evalMmCatLastChance(d,c,SL)
if containsVars dom then dom := resolveTM(CDR p, dom)
$Coerce and canCoerce(CDR p, dom) =>
@@ -1423,7 +1374,7 @@ hasCate(dom,cat,SL) ==
(p:= ASSQ(dom,SL)) and ((NSL := hasCate(CDR p,cat,SL)) ^= 'failed) =>
NSL
(p:= ASSQ(dom,$Subst)) or (p := ASSQ(dom, SL)) =>
--- S:= hasCate(CDR p,cat,augmentSub(CAR p,CDR p,copy SL))
+-- S:= hasCate(CDR p,cat,augmentSub(CAR p,CDR p,copy SL))
S:= hasCate1(CDR p,cat,SL, dom)
not (S='failed) => S
hasCateSpecial(dom,CDR p,cat,SL)
@@ -1466,11 +1417,11 @@ hasCateSpecial(v,dom,cat,SL) ==
hasCateSpecialNew(v,dom,cat,SL) ==
fe := member(QCAR cat, '(ElementaryFunctionCategory
TrigonometricFunctionCategory ArcTrigonometricFunctionCategory
- HyperbolicFunctionCategory ArcHyperbolicFunctionCategory
- PrimitiveFunctionCategory SpecialFunctionCategory Evalable
- CombinatorialOpsCategory TranscendentalFunctionCategory
- AlgebraicallyClosedFunctionSpace ExpressionSpace
- LiouvillianFunctionCategory FunctionSpace))
+ HyperbolicFunctionCategory ArcHyperbolicFunctionCategory
+ PrimitiveFunctionCategory SpecialFunctionCategory Evalable
+ CombinatorialOpsCategory TranscendentalFunctionCategory
+ AlgebraicallyClosedFunctionSpace ExpressionSpace
+ LiouvillianFunctionCategory FunctionSpace))
alg := member(QCAR cat, '(RadicalCategory AlgebraicallyClosedField))
fefull := fe or alg or EQCAR(cat, 'CombinatorialFunctionCategory)
partialResult :=
@@ -1478,8 +1429,8 @@ hasCateSpecialNew(v,dom,cat,SL) ==
CAR(cat) in
'(SemiGroup AbelianSemiGroup Monoid AbelianGroup AbelianMonoid
PartialDifferentialRing Ring InputForm) =>
- d := ['Polynomial, $Integer]
- augmentSub(v, d, SL)
+ d := ['Polynomial, $Integer]
+ augmentSub(v, d, SL)
EQCAR(cat, 'Group) =>
d := ['Fraction, ['Polynomial, $Integer]]
augmentSub(v, d, SL)
@@ -1521,20 +1472,20 @@ hasCaty(d,cat,SL) ==
cat is ['ATTRIBUTE,a] => hasAtt(d,subCopy(a,constructSubst d),SL)
x:= hasCat(opOf d,opOf cat) =>
y:= KDR cat =>
- S := constructSubst d
+ S := constructSubst d
for [z,:cond] in x until not (S1='failed) repeat
- S' := [[p, :mkDomPvar(p, d, z, y)] for [p,:d] in S]
- if $domPvar then
- dom := [CAR d, :[domArg(arg, i, z, y) for i in 0..
- for arg in CDR d]]
- SL := augmentSub($domPvar, dom, copy SL)
- z' := [domArg2(a, S, S') for a in z]
- S1:= unifyStruct(y,z',copy SL)
- if not (S1='failed) then S1:=
- atom cond => S1
- ncond := subCopy(cond, S)
- ncond is ['has, =d, =cat] => 'failed
- hasCaty1(ncond,S1)
+ S' := [[p, :mkDomPvar(p, d, z, y)] for [p,:d] in S]
+ if $domPvar then
+ dom := [CAR d, :[domArg(arg, i, z, y) for i in 0..
+ for arg in CDR d]]
+ SL := augmentSub($domPvar, dom, copy SL)
+ z' := [domArg2(a, S, S') for a in z]
+ S1:= unifyStruct(y,z',copy SL)
+ if not (S1='failed) then S1:=
+ atom cond => S1
+ ncond := subCopy(cond, S)
+ ncond is ['has, =d, =cat] => 'failed
+ hasCaty1(ncond,S1)
S1
atom x => SL
ncond := subCopy(x, constructSubst d)
@@ -1598,9 +1549,9 @@ hasSigAnd(andCls, S0, SL) ==
SA :=
atom cls => copy SL
cls is ['has,a,b] =>
- hasCate(subCopy(a,S0),subCopy(b,S0),copy SL)
+ hasCate(subCopy(a,S0),subCopy(b,S0),copy SL)
keyedSystemError("S2GE0016",
- ['"hasSigAnd",'"unexpected condition for signature"])
+ ['"hasSigAnd",'"unexpected condition for signature"])
if SA = 'failed then dead := true
SA
@@ -1611,11 +1562,11 @@ hasSigOr(orCls, S0, SL) ==
SA :=
atom cls => copy SL
cls is ['has,a,b] =>
- hasCate(subCopy(a,S0),subCopy(b,S0),copy SL)
+ hasCate(subCopy(a,S0),subCopy(b,S0),copy SL)
cls is ['AND,:andCls] or cls is ['and,:andCls] =>
- hasSigAnd(andCls, S0, SL)
+ hasSigAnd(andCls, S0, SL)
keyedSystemError("S2GE0016",
- ['"hasSigOr",'"unexpected condition for signature"])
+ ['"hasSigOr",'"unexpected condition for signature"])
if SA ^= 'failed then found := true
SA
@@ -1627,17 +1578,17 @@ hasSig(dom,foo,sig,SL) ==
S0:= constructSubst dom
p := ASSQ(foo,getOperationAlistFromLisplib CAR dom) =>
for [x,.,cond,.] in CDR p until not (S='failed) repeat
- S:=
- atom cond => copy SL
- cond is ['has,a,b] =>
- hasCate(subCopy(a,S0),subCopy(b,S0),copy SL)
- cond is ['AND,:andCls] or cond is ['and,:andCls] =>
- hasSigAnd(andCls, S0, SL)
- cond is ['OR,:orCls] or cond is ['or,:orCls] =>
- hasSigOr(orCls, S0, SL)
- keyedSystemError("S2GE0016",
- ['"hasSig",'"unexpected condition for signature"])
- not (S='failed) => S:= unifyStruct(subCopy(x,S0),sig,S)
+ S:=
+ atom cond => copy SL
+ cond is ['has,a,b] =>
+ hasCate(subCopy(a,S0),subCopy(b,S0),copy SL)
+ cond is ['AND,:andCls] or cond is ['and,:andCls] =>
+ hasSigAnd(andCls, S0, SL)
+ cond is ['OR,:orCls] or cond is ['or,:orCls] =>
+ hasSigOr(orCls, S0, SL)
+ keyedSystemError("S2GE0016",
+ ['"hasSig",'"unexpected condition for signature"])
+ not (S='failed) => S:= unifyStruct(subCopy(x,S0),sig,S)
S
'failed
'failed
@@ -1649,14 +1600,14 @@ hasAtt(dom,att,SL) ==
fun:= CAR dom =>
atts:= subCopy(GETDATABASE(fun,'ATTRIBUTES),constructSubst dom) =>
PAIRP (u := getInfovec CAR dom) =>
- --UGH! New world has attributes stored as pairs not as lists!!
- for [x,:cond] in atts until not (S='failed) repeat
- S:= unifyStruct(x,att,copy SL)
- not atom cond and not (S='failed) => S := hasCatExpression(cond,S)
- S
+ --UGH! New world has attributes stored as pairs not as lists!!
+ for [x,:cond] in atts until not (S='failed) repeat
+ S:= unifyStruct(x,att,copy SL)
+ not atom cond and not (S='failed) => S := hasCatExpression(cond,S)
+ S
for [x,cond] in atts until not (S='failed) repeat
- S:= unifyStruct(x,att,copy SL)
- not atom cond and not (S='failed) => S := hasCatExpression(cond,S)
+ S:= unifyStruct(x,att,copy SL)
+ not atom cond and not (S='failed) => S := hasCatExpression(cond,S)
S
'failed
'failed
@@ -1699,29 +1650,29 @@ unifyStructVar(v,s,SL) ==
S:= unifyStruct(s0,s1,copy SL)
S='failed =>
$Coerce and not atom s0 and constructor? CAR s0 =>
- containsVars s0 or containsVars s1 =>
- ns0 := subCopy(s0, SL)
- ns1 := subCopy(s1, SL)
- containsVars ns0 or containsVars ns1 =>
- $hope:= 'T
- 'failed
- if canCoerce(ns0, ns1) then s3 := s1
- else if canCoerce(ns1, ns0) then s3 := s0
- else s3 := nil
- s3 =>
- if (s3 ^= s0) then SL := augmentSub(v,s3,SL)
- if (s3 ^= s1) and isPatternVar(s) then SL := augmentSub(s,s3,SL)
- SL
- 'failed
- $domPvar =>
- s3 := resolveTT(s0,s1)
- s3 =>
- if (s3 ^= s0) then SL := augmentSub(v,s3,SL)
- if (s3 ^= s1) and isPatternVar(s) then SL := augmentSub(s,s3,SL)
- SL
- 'failed
--- isSubDomain(s,s0) => augmentSub(v,s0,SL)
- 'failed
+ containsVars s0 or containsVars s1 =>
+ ns0 := subCopy(s0, SL)
+ ns1 := subCopy(s1, SL)
+ containsVars ns0 or containsVars ns1 =>
+ $hope:= 'T
+ 'failed
+ if canCoerce(ns0, ns1) then s3 := s1
+ else if canCoerce(ns1, ns0) then s3 := s0
+ else s3 := nil
+ s3 =>
+ if (s3 ^= s0) then SL := augmentSub(v,s3,SL)
+ if (s3 ^= s1) and isPatternVar(s) then SL := augmentSub(s,s3,SL)
+ SL
+ 'failed
+ $domPvar =>
+ s3 := resolveTT(s0,s1)
+ s3 =>
+ if (s3 ^= s0) then SL := augmentSub(v,s3,SL)
+ if (s3 ^= s1) and isPatternVar(s) then SL := augmentSub(s,s3,SL)
+ SL
+ 'failed
+-- isSubDomain(s,s0) => augmentSub(v,s0,SL)
+ 'failed
'failed
augmentSub(v,s,S)
augmentSub(v,s,SL)
@@ -1747,7 +1698,7 @@ printMms(mmS) ==
sayMSG ['" implemented: local function ",imp]
imp is ['XLAM,:.] =>
sayMSG concat('" implemented: XLAM from ",
- prefix2String CAR sig)
+ prefix2String CAR sig)
sayMSG concat('" implemented: slot ",imp,
'" from ",prefix2String CAR sig)
sayMSG '" "
@@ -1768,7 +1719,9 @@ containsVars1(t) ==
atom t2 => isPatternVar t2
containsVars1(t2)
-<<isPartialMode>>
+isPartialMode m ==
+ CONTAINED($EmptyMode,m)
+
getSymbolType var ==
-- var is a pattern variable
@@ -1814,9 +1767,3 @@ defaultTypeForCategory(cat, SL) ==
NIL
-@
-\eject
-\begin{thebibliography}{99}
-\bibitem{1} nothing
-\end{thebibliography}
-\end{document}
diff --git a/src/interp/i-intern.boot.pamphlet b/src/interp/i-intern.boot
index aabd6a7e..c2cd8a84 100644
--- a/src/interp/i-intern.boot.pamphlet
+++ b/src/interp/i-intern.boot
@@ -1,17 +1,3 @@
-\documentclass{article}
-\usepackage{axiom}
-\begin{document}
-\title{\$SPAD/src/interp i-intern.boot}
-\author{The Axiom Team}
-\maketitle
-\begin{abstract}
-\end{abstract}
-\eject
-\tableofcontents
-\eject
-
-\section{License}
-<<license>>=
-- Copyright (c) 1991-2002, The Numerical ALgorithms Group Ltd.
-- All rights reserved.
--
@@ -43,9 +29,6 @@
-- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-@
-<<*>>=
-<<license>>
import '"i-object"
import '"ptrees"
@@ -470,9 +453,3 @@ addIntSymTabBinding(var,proplist,e is [[curContour,:.],:.]) ==
e
-@
-\eject
-\begin{thebibliography}{99}
-\bibitem{1} nothing
-\end{thebibliography}
-\end{document}
diff --git a/src/interp/i-map.boot.pamphlet b/src/interp/i-map.boot
index c64a4318..7a4a3eb1 100644
--- a/src/interp/i-map.boot.pamphlet
+++ b/src/interp/i-map.boot
@@ -1,20 +1,3 @@
-\documentclass{article}
-\usepackage{axiom}
-
-\title{\File{src/interp/i-map.boot} Pamphlet}
-\author{The Axiom Team}
-
-\begin{document}
-\maketitle
-\begin{abstract}
-\end{abstract}
-\eject
-\tableofcontents
-\eject
-
-\section{License}
-
-<<license>>=
-- Copyright (c) 1991-2002, The Numerical ALgorithms Group Ltd.
-- All rights reserved.
--
@@ -46,9 +29,6 @@
-- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-@
-<<*>>=
-<<license>>
import '"i-object"
)package "BOOT"
@@ -1180,9 +1160,3 @@ getLocalVars(op,body) ==
-- with modemap ((dummy target source ..) (T f;1)) so that the next
-- time f is applied to arguments which coerce to the source
-- arguments of this local modemap, f;1 will be invoked.
-@
-\eject
-\begin{thebibliography}{99}
-\bibitem{1} nothing
-\end{thebibliography}
-\end{document}
diff --git a/src/interp/i-resolv.boot.pamphlet b/src/interp/i-resolv.boot
index a9c2e362..ec359b1c 100644
--- a/src/interp/i-resolv.boot.pamphlet
+++ b/src/interp/i-resolv.boot
@@ -1,57 +1,3 @@
-\documentclass{article}
-\usepackage{axiom}
-
-\title{\File{src/interp/i-resolv.boot} Pamphlet}
-\author{The Axiom Team}
-
-\begin{document}
-\maketitle
-\begin{abstract}
-\end{abstract}
-\eject
-\tableofcontents
-\eject
-
-\begin{verbatim}
-new resolution: types and modes
-
-a type is any term (structure) which can be regarded as a
- functor call
-a basic type is the call of a nullary functor (e.g. (Integer)),
- otherwise it is a structured type (e.g. (Polynomial (Integer)))
-a functor together with its non-type arguments is called a
- type constructor
-
-a mode is a type which can be partially specified, i.e. a term
- containing term variables
-a term variable (denoted by control-L) stands for any nullary or unary function
- which was build from type constructors
-this means, a term variable can be:
- a function LAMBDA ().T, where T is a type
- a function LAMBDA (X).T(X), where X is a variable for a type and
- T a type containing this variable
- a function LAMBDA X.X ("control-L can be disregarded")
-examples:
- P(control-L) can stand for (Polynomial (RationalFunction (Integer)))
- G(control-L(I)) can stand for (Gaussian (Polynomial (Integer))), but also
- for (Gaussian (Integer))
-
-
-Resolution of Two Types
-
-this symmetric resolution is done the following way:
-1. if the same type constructor occurs in both terms, then the
- type tower is built around this constructor (resolveTTEq)
-2. the next step is to look for two constructors which have an
- "algebraic relationship", this means, a rewrite rule is
- applicable (e.g. UP(x,I) and MP([x,y],I))
- this is done by resolveTTRed
-3. if none of this is true, then a tower of types is built
- e.g. resolve P I and G I to P G I
-
-\end{verbatim}
-\section{License}
-<<license>>=
-- Copyright (c) 1991-2002, The Numerical ALgorithms Group Ltd.
-- All rights reserved.
--
@@ -83,9 +29,6 @@ this symmetric resolution is done the following way:
-- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-@
-<<*>>=
-<<license>>
import '"i-object"
)package "BOOT"
@@ -855,9 +798,3 @@ compareTT(t1,t2) ==
MEMQ(opOf t2,[$QuotientField, 'SimpleAlgebraicExtension]) => NIL
CGREATERP(PRIN2CVEC opOf t1,PRIN2CVEC opOf t2)
-@
-\eject
-\begin{thebibliography}{99}
-\bibitem{1} nothing
-\end{thebibliography}
-\end{document}
diff --git a/src/interp/i-spec1.boot.pamphlet b/src/interp/i-spec1.boot
index 2e178fe0..1ab11dc0 100644
--- a/src/interp/i-spec1.boot.pamphlet
+++ b/src/interp/i-spec1.boot
@@ -1,59 +1,3 @@
-\documentclass{article}
-\usepackage{axiom}
-\begin{document}
-\title{\$SPAD/src/interp i-spec1.boot}
-\author{The Axiom Team}
-\maketitle
-\begin{abstract}
-\end{abstract}
-\eject
-\tableofcontents
-\eject
-\begin{verbatim}
-Handlers for Special Forms (1 of 2)
-
-This file contains the functions which do type analysis and
-evaluation of special functions in the interpreter.
-Special functions are ones which are not defined in the algebra
-code, such as assignment, construct, COLLECT and declaration.
-
-Operators which require special handlers all have a LISP "up"
-property which is the name of the special handler, which is
-always the word "up" followed by the operator name.
-If an operator has this "up" property the handler is called
-automatically from bottomUp instead of general modemap selection.
-
-The up handlers are usually split into two pieces, the first is
-the up function itself, which performs the type analysis, and an
-"eval" function, which generates (and executes, if required) the
-code for the function.
-The up functions always take a single argument, which is the
-entire attributed tree for the operation, and return the modeSet
-of the node, which is a singleton list containing the type
-computed for the node.
-The eval functions can take any arguments deemed necessary.
-Actual evaluation is done if $genValue is true, otherwise code is
-generated.
-(See the function analyzeMap for other things that may affect
-what is generated in these functions.)
-
-These functions are required to do two things:
- 1) do a putValue on the operator vector with the computed value
- of the node, which is a triple. This is usually done in the
- eval functions.
- 2) do a putModeSet on the operator vector with a list of the
- computed type of the node. This is usually done in the
- up functions.
-
-There are several special modes used in these functions:
- 1) Void is the mode that should be used for all statements
- that do not otherwise return values, such as declarations,
- loops, IF-THEN's without ELSE's, etc..
- 2) $NoValueMode and $ThrowAwayMode used to be used in situations
- where Void is now used, and are being phased out completely.
-\end{verbatim}
-\section{License}
-<<license>>=
-- Copyright (c) 1991-2002, The Numerical ALgorithms Group Ltd.
-- All rights reserved.
--
@@ -85,9 +29,6 @@ There are several special modes used in these functions:
-- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-@
-<<*>>=
-<<license>>
import '"i-analy"
)package "BOOT"
@@ -1295,9 +1236,3 @@ deleteAll(x,l) ==
x = CAR(l) => deleteAll(x,CDR l)
[first l,:deleteAll(x,rest l)]
-@
-\eject
-\begin{thebibliography}{99}
-\bibitem{1} nothing
-\end{thebibliography}
-\end{document}
diff --git a/src/interp/i-spec2.boot.pamphlet b/src/interp/i-spec2.boot
index 8d57009a..aec3d6ce 100644
--- a/src/interp/i-spec2.boot.pamphlet
+++ b/src/interp/i-spec2.boot
@@ -1,59 +1,3 @@
-\documentclass{article}
-\usepackage{axiom}
-\begin{document}
-\title{\$SPAD/src/interp i-spec2.boot}
-\author{The Axiom Team}
-\maketitle
-\begin{abstract}
-\end{abstract}
-\eject
-\tableofcontents
-\eject
-\begin{verbatim}
-Handlers for Special Forms (2 of 2)
-
-This file contains the functions which do type analysis and
-evaluation of special functions in the interpreter.
-Special functions are ones which are not defined in the algebra
-code, such as assignment, construct, COLLECT and declaration.
-
-Operators which require special handlers all have a LISP "up"
-property which is the name of the special handler, which is
-always the word "up" followed by the operator name.
-If an operator has this "up" property the handler is called
-automatically from bottomUp instead of general modemap selection.
-
-The up handlers are usually split into two pieces, the first is
-the up function itself, which performs the type analysis, and an
-"eval" function, which generates (and executes, if required) the
-code for the function.
-The up functions always take a single argument, which is the
-entire attributed tree for the operation, and return the modeSet
-of the node, which is a singleton list containing the type
-computed for the node.
-The eval functions can take any arguments deemed necessary.
-Actual evaluation is done if $genValue is true, otherwise code is
-generated.
-(See the function analyzeMap for other things that may affect
-what is generated in these functions.)
-
-These functions are required to do two things:
- 1) do a putValue on the operator vector with the computed value
- of the node, which is a triple. This is usually done in the
- eval functions.
- 2) do a putModeSet on the operator vector with a list of the
- computed type of the node. This is usually done in the
- up functions.
-
-There are several special modes used in these functions:
- 1) Void is the mode that should be used for all statements
- that do not otherwise return values, such as declarations,
- loops, IF-THEN's without ELSE's, etc..
- 2) $NoValueMode and $ThrowAwayMode used to be used in situations
- where Void is now used, and are being phased out completely.
-\end{verbatim}
-\section{License}
-<<license>>=
-- Copyright (c) 1991-2002, The Numerical ALgorithms Group Ltd.
-- All rights reserved.
--
@@ -85,9 +29,6 @@ There are several special modes used in these functions:
-- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-@
-<<*>>=
-<<license>>
import '"i-spec1"
)package "BOOT"
@@ -1207,9 +1148,3 @@ for name in $specialOps repeat
MAKEPROP(name,'up,functionName)
CREATE_-SBC functionName
-@
-\eject
-\begin{thebibliography}{99}
-\bibitem{1} nothing
-\end{thebibliography}
-\end{document}
diff --git a/src/interp/i-syscmd.boot.pamphlet b/src/interp/i-syscmd.boot
index 37eb1209..6c91b725 100644
--- a/src/interp/i-syscmd.boot.pamphlet
+++ b/src/interp/i-syscmd.boot
@@ -1,98 +1,3 @@
-\documentclass{article}
-\usepackage{axiom}
-
-\title{\File{src/interp/i-syscmd.boot} Pamphlet}
-\author{The Axiom Team}
-
-\begin{document}
-\maketitle
-\begin{abstract}
-\end{abstract}
-\eject
-\tableofcontents
-\eject
-
-\begin{verbatim}
-This file contains the BOOT code for the Axiom system command
-and synonym processing facility. The code for )trace is in the file
-TRACE BOOT. The list of system commands is $SYSCOMMANDS which is
-initialized in SETQ LISP.
-
-\end{verbatim}
-
-\section{Filenames change}
-
-It appears that probe-file is now case-sensitive. In order to get around
-this we include the file extensions in both upper and lower case in the
-search lists. Lower case names are preferred.
-
-\section{handleNoParseCommands}
-
-The system commands given by the global variable
-[[|$noParseCommands|]]\cite{1} require essentially no
-preprocessing/parsing of their arguments. Here we dispatch the
-functions which implement these commands.
-
-There are four standard commands which receive arguments -- [[lisp]],
-[[synonym]], [[system]] and [[boot]]. There are five standard commands
-which do not receive arguments -- [[quit]], [[fin]], [[pquit]],
-[[credits]] and [[copyright]]. As these commands do not necessarily
-exhaust those mentioned in [[|$noParseCommands|]], we provide a
-generic dispatch based on two conventions: commands which do not
-require an argument name themselves, those which do have their names
-prefixed by [[np]].
-
-<<handleNoParseCommands>>=
-handleNoParseCommands(unab, string) ==
- string := stripSpaces string
- spaceIndex := SEARCH('" ", string)
- unab = "lisp" =>
- if (null spaceIndex) then
- sayKeyedMsg("S2IV0005", NIL)
- nil
- else nplisp(stripLisp string)
- unab = "boot" =>
- if (null spaceIndex) then
- sayKeyedMsg("S2IV0005", NIL)
- nil
- else npboot(SUBSEQ(string, spaceIndex+1))
- unab = "system" =>
- if (null spaceIndex) then
- sayKeyedMsg("S2IV0005", NIL)
- nil
- else npsystem(unab, string)
- unab = "synonym" =>
- npsynonym(unab, (null spaceIndex => '""; SUBSEQ(string, spaceIndex+1)))
- null spaceIndex =>
- FUNCALL unab
- member(unab, '( quit _
- fin _
- pquit _
- credits _
- copyright )) =>
- sayKeyedMsg("S2IV0005", NIL)
- nil
- funName := INTERN CONCAT('"np",STRING unab)
- FUNCALL(funName, SUBSEQ(string, spaceIndex+1))
-
-@
-\section{TRUENAME change}
-This change was made to make the open source Axiom work with the
-new aldor compiler.z
-This used to read:
-\begin{verbatim}
- STRCONC(TRUENAME(STRCONC(GETENV('"AXIOM"),'"/compiler/bin/")),"axiomxl ", asharpArgs, '" ", namestring args)
-\end{verbatim}
-but now reads:
-<<remove TRUENAME>>=
- STRCONC(STRCONC(GETENV('"ALDORROOT"),'"/bin/"),_
- "aldor ", asharpArgs, '" ", namestring args)
-@
-Notice that we've introduced the [[ALDORROOT]] shell variable.
-This will have to be pushed down from the top level Makefile.
-
-\section{License}
-<<license>>=
-- Copyright (c) 1991-2002, The Numerical ALgorithms Group Ltd.
-- All rights reserved.
--
@@ -124,9 +29,6 @@ This will have to be pushed down from the top level Makefile.
-- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-@
-<<*>>=
-<<license>>
import '"i-object"
)package "BOOT"
@@ -667,7 +569,8 @@ compileAsharpCmd1 args ==
if ^beQuiet then sayKeyedMsg("S2IZ0038A",[namestring args, asharpArgs])
command :=
-<<remove TRUENAME>>
+ STRCONC(STRCONC(GETENV('"ALDORROOT"),'"/bin/"),_
+ "aldor ", asharpArgs, '" ", namestring args)
rc := OBEY command
if (rc = 0) and doCompileLisp then
@@ -2126,7 +2029,7 @@ dewritify ob ==
type = 'NULLSTREAM => $NullStream
type = 'NONNULLSTREAM => $NonNullStream
type = 'FLOAT =>
- [fval, signif, expon, sign] := CDDR ob
+ [fval, signif, expon, sign] := CDDR ob
fval := SCALE_-FLOAT( FLOAT(signif, fval), expon)
sign<0 => -fval
fval
@@ -3045,7 +2948,38 @@ doSystemCommand string ==
nil
nil
-<<handleNoParseCommands>>
+handleNoParseCommands(unab, string) ==
+ string := stripSpaces string
+ spaceIndex := SEARCH('" ", string)
+ unab = "lisp" =>
+ if (null spaceIndex) then
+ sayKeyedMsg("S2IV0005", NIL)
+ nil
+ else nplisp(stripLisp string)
+ unab = "boot" =>
+ if (null spaceIndex) then
+ sayKeyedMsg("S2IV0005", NIL)
+ nil
+ else npboot(SUBSEQ(string, spaceIndex+1))
+ unab = "system" =>
+ if (null spaceIndex) then
+ sayKeyedMsg("S2IV0005", NIL)
+ nil
+ else npsystem(unab, string)
+ unab = "synonym" =>
+ npsynonym(unab, (null spaceIndex => '""; SUBSEQ(string, spaceIndex+1)))
+ null spaceIndex =>
+ FUNCALL unab
+ member(unab, '( quit _
+ fin _
+ pquit _
+ credits _
+ copyright )) =>
+ sayKeyedMsg("S2IV0005", NIL)
+ nil
+ funName := INTERN CONCAT('"np",STRING unab)
+ FUNCALL(funName, SUBSEQ(string, spaceIndex+1))
+
npboot str ==
sex := string2BootTree str
@@ -3195,9 +3129,3 @@ npProcessSynonym(str) ==
-@
-\eject
-\begin{thebibliography}{99}
-\bibitem{1} [[src/interp/setq.lisp.pamphlet]]
-\end{thebibliography}
-\end{document}
diff --git a/src/interp/i-toplev.boot.pamphlet b/src/interp/i-toplev.boot
index 411d9b05..b94a5ca8 100644
--- a/src/interp/i-toplev.boot.pamphlet
+++ b/src/interp/i-toplev.boot
@@ -1,22 +1,3 @@
-\documentclass{article}
-\usepackage{axiom}
-\begin{document}
-\title{\$SPAD/src/interp i-toplev.boot}
-\author{The Axiom Team}
-\maketitle
-\begin{abstract}
-\end{abstract}
-\eject
-\tableofcontents
-\eject
-\begin{verbatim}
-This file contains the top-most code for receiving parser output,
-calling the analysis routines and printing the result output. It
-also contains several flavors of routines that start the interpreter
-from LISP.
-\end{verbatim}
-\section{License}
-<<license>>=
-- Copyright (c) 1991-2002, The Numerical ALgorithms Group Ltd.
-- All rights reserved.
--
@@ -48,9 +29,6 @@ from LISP.
-- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-@
-<<*>>=
-<<license>>
import '"i-analy"
)package "BOOT"
@@ -355,9 +333,3 @@ interpret2(object,m1,posnForm) ==
if (ans := coerceInteractive(object,m1)) then ans
else throwKeyedMsgCannotCoerceWithValue(x,m,m1)
object
-@
-\eject
-\begin{thebibliography}{99}
-\bibitem{1} nothing
-\end{thebibliography}
-\end{document}
diff --git a/src/interp/i-util.boot.pamphlet b/src/interp/i-util.boot
index 3539c195..b064c526 100644
--- a/src/interp/i-util.boot.pamphlet
+++ b/src/interp/i-util.boot
@@ -1,28 +1,3 @@
-\documentclass{article}
-\usepackage{axiom}
-
-\title{\File{src/interp/i-util.boot} Pamphlet}
-\author{The Axiom Team}
-
-\begin{document}
-\maketitle
-\begin{abstract}
-\end{abstract}
-\eject
-\tableofcontents
-\eject
-
-\begin{verbatim}
-Wrapping and Unwrapping Values
-
-A wrapped value represents something that need not be evaluated
-when code is generated. This includes objects from domains or things
-that just happed to evaluate to themselves. Typically generated
-lisp code is unwrapped.
-
-\end{verbatim}
-\section{License}
-<<license>>=
-- Copyright (c) 1991-2002, The Numerical ALgorithms Group Ltd.
-- All rights reserved.
--
@@ -54,9 +29,6 @@ lisp code is unwrapped.
-- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-@
-<<*>>=
-<<license>>
import '"g-util"
)package "BOOT"
@@ -255,9 +227,3 @@ mkPredList listOfEntries ==
-@
-\eject
-\begin{thebibliography}{99}
-\bibitem{1} nothing
-\end{thebibliography}
-\end{document}