17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
|
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
|
-
+
|
optional< UnificationContext > bestUC;
optional< Term > bestSol;
const OverloadSet::Overload* bestOvl = nullptr;
bool ambiguous = false;
auto rtPat = MkHole( "_"_sid );
for( auto&& [s,ovl,uc] : pOvlSet->unify( args.val(), rtPat, uc ) )
for( auto&& [s,ovl,uc] : pOvlSet->unify( c.domain(), args.val(), rtPat, uc ) )
{
if( uc.numUnknownValues() )
continue;
if( !bestSol || uc.score() > bestUC->score() )
{
auto ssol = Substitute( s, uc );
|