diff options
Diffstat (limited to 'src/interp/i-funsel.boot')
-rw-r--r-- | src/interp/i-funsel.boot | 7 |
1 files changed, 3 insertions, 4 deletions
diff --git a/src/interp/i-funsel.boot b/src/interp/i-funsel.boot index 0b294caa..1dd0d74a 100644 --- a/src/interp/i-funsel.boot +++ b/src/interp/i-funsel.boot @@ -763,8 +763,8 @@ selectMostGeneralMm mmList == genMm := first mmList while mml repeat [mm,:mml] := mml - and/[canCoerceFrom(genMmArg,mmArg) for mmArg in CDAR mm - for genMmArg in CDAR genMm] => genMm := mm + and/[canCoerceFrom(genMmArg,mmArg) for mmArg in mm.mmSignature + for genMmArg in genMm.mmSignature] => genMm := mm genMm findFunctionInDomain(op,dc,tar,args1,args2,$Coerce,$SubDom) == @@ -800,8 +800,7 @@ findFunctionInDomain(op,dc,tar,args1,args2,$Coerce,$SubDom) == q := nil r := nil for mm in rest p repeat - -- CDAR of mm is the signature argument list - if isHomogeneousList CDAR mm then q := [mm,:q] + if isHomogeneousList mm.mmSignature then q := [mm,:q] else r := [mm,:r] q := allOrMatchingMms(q,args1,tar,dc) for mm in q repeat |