aboutsummaryrefslogtreecommitdiff
path: root/src/algebra/mkfunc.spad.pamphlet
diff options
context:
space:
mode:
authordos-reis <gdr@axiomatics.org>2009-07-12 17:10:18 +0000
committerdos-reis <gdr@axiomatics.org>2009-07-12 17:10:18 +0000
commit3838fe22164e91e9d5269f801c2b668682ccde83 (patch)
tree68200708174170f1d1ce3573e7d8cf77a4af4d81 /src/algebra/mkfunc.spad.pamphlet
parent9a91238840354e46c0f1d898881d5ebf8c395520 (diff)
downloadopen-axiom-3838fe22164e91e9d5269f801c2b668682ccde83.tar.gz
* algebra/mkfunc.spad.pamphlet
(mkDefun$MakeFloatCompiledFunction): Tidy. * interp/c-util.boot (declareUnusedParameters): New. * interp/i-map.boot: Use it. * interp/i-spec1.boot: Likewise. * interp/slam.boot: Likewise. * lib/cfuns-c.c (writeablep): Document MinGW/MSYS bug work around.
Diffstat (limited to 'src/algebra/mkfunc.spad.pamphlet')
-rw-r--r--src/algebra/mkfunc.spad.pamphlet16
1 files changed, 13 insertions, 3 deletions
diff --git a/src/algebra/mkfunc.spad.pamphlet b/src/algebra/mkfunc.spad.pamphlet
index 4b629b78..30f219d6 100644
--- a/src/algebra/mkfunc.spad.pamphlet
+++ b/src/algebra/mkfunc.spad.pamphlet
@@ -397,6 +397,11 @@ MakeFloatCompiledFunction(S): Exports == Implementation where
coerceToSF(f: INF): INF ==
gencode("COERCE",[f, quote getVMType(SF)$Foreign(Builtin)])
+ -- return true if the form `x' is contained in `y'
+ contained?(x: INF, y: INF): Boolean ==
+ atom? y => x = y
+ contained?(x, car y) or contained?(x, cdr y)
+
mkPretend form ==
convert([convert("pretend"::Symbol), form, lsf]$List(INF))@INF
@@ -410,9 +415,14 @@ MakeFloatCompiledFunction(S): Exports == Implementation where
mkDefun(s, lv) ==
name := convert(new()$Symbol)@INF
- fun := convert([convert("DEFUN"::Symbol), name, convert lv,
- gencode("DECLARE",[gencode("FLOAT",lv)]),
- coerceToSF mkCTOR s]$List(INF))@INF
+ body := coerceToSF mkCTOR s
+ unusedParms := [ p for p in lv | not contained?(p,s)]
+ stmts :=
+ null unusedParms => [body]
+ [gencode("DECLARE",[gencode("IGNORE", unusedParms)]),body]
+ stmts := concat(gencode("DECLARE",[gencode("FLOAT",lv)]), stmts)
+ header := [convert("DEFUN"::Symbol), name, convert lv]
+ fun := convert append(header,stmts)
EVAL(fun)$Lisp
if _$compileDontDefineFunctions$Lisp then COMPILE(name)$Lisp
name