I found the place where things went wrong, it's compileADEFBody in
i-spec1.boot. Now the tests seem to pass.
I do not think that my fix is correct though. Maybe somebody could check. I
wonder, maybe |compQuietly| in comp.lisp should return a function?
Martin
compileADEFBody(t,vars,types,body,computedResultType) ==
--+
$compiledOpNameList := [$mapName]
minivectorName := makeInternalMapMinivectorName(PNAME $mapName)
$minivectorNames := [[$mapName,:minivectorName],:$minivectorNames]
body := SUBST(minivectorName,"$$$",body)
if $compilingInputFile then
$minivectorCode := [:$minivectorCode,minivectorName]
SET(minivectorName,LIST2REFVEC $minivector)
-- The use of the three variables $definingMap, $genValue and $compilingMap
-- is to cover the following cases:
--
-- $definingMap: This is set in analyzeMap and covers examples like:
-- addx x == ((y: Integer): Integer +-> x + y)
-- g := addx 10
-- g 3
-- i.e. we are storing the mapping as an object.
--
-- $compilingMap: This covers mappings which are created and applied "on the
-- "fly", for example:
-- [map(h +-> D(h, t), v) for v in [t]]
--
-- $genValue: This seems to be needed when we create a map as an argument
-- for a constructor, e.g.:
-- Dx: LODO(EXPR INT, f +-> D(f, x)) := D()
--
-- MCD 13/3/96
if not $definingMap and ($genValue or $compilingMap) then
fun := [$mapName,['LAMBDA,[:vars,'envArg],body]]
tmp := compileInteractive fun
code := wrap RPLACA(tmp, SYMBOL_-FUNCTION CAR tmp)
else
$freeVariables := []
$boundVariables := [minivectorName,:vars]
-- CCL does not support upwards funargs, so we check for any free variables
-- and pass them into the lambda as part of envArg.
body := checkForFreeVariables(body,"ALL")
fun := ['function,['LAMBDA,[:vars,'envArg],body]]
code := ['CONS, fun, ["VECTOR", :reverse $freeVariables]]
val := objNew(code,rt := ['Mapping,computedResultType,:rest types])
putValue(t,val)
putModeSet(t,[rt])
-------------------------------------------------------------------------
This SF.net email is sponsored by the 2008 JavaOne(SM) Conference
Register now and save $200. Hurry, offer ends at 11:59 p.m.,
Monday, April 7! Use priority code J8TLD2.
http://ad.doubleclick.net/clk;198757673;13503038;p?http://java.sun.com/javaone
_______________________________________________
open-axiom-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/open-axiom-devel