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 open-axiom-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/open-axiom-devel