12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
NoUnification,
AmbiguousTypeCheck,
TCSol
>;
TypeCheckingSolution FindBestTyping( const Term& lhs, const Term& rhs, const Context& context );
using TCGen = Generator< pair< Term, TypeCheckingContext > >;
TCGen TypeCheck( const Term& lhs, const Term& rhs, const TypeCheckingContext& tcc );
TCGen Unify( const Term& lhs, const Term& rhs, const TypeCheckingContext& tcc );
optional< Term > HalfUnify( const Term& lhs, TypeCheckingContext& tcc );
}
#endif
|
>
|
>
>
>
>
>
>
>
>
>
|
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
|
NoUnification,
AmbiguousTypeCheck,
TCSol
>;
TypeCheckingSolution FindBestTyping( const Term& lhs, const Term& rhs, const Context& context );
using TCInput = pair< MatchScore, const TypeCheckingRuleSet::BinaryRule* >;
using TCInputGen = Generator< TCInput >;
template< typename T >
TCInputGen ContainerTCInputGen( const T& container )
{
for( auto&& input : container )
co_yield TCInput( input );
}
TCGen TypeCheck( const Term& lhs, const Term& rhs, const TypeCheckingContext& tcc );
TCGen TypeCheck( TCInputGen&& ig, const Term& lhs, const Term& rhs, const TypeCheckingContext& tcc );
optional< TCGen > SelectTypeCheckRule( TCInputGen&& ig, const Term& lhs, const Term& rhs, const TypeCheckingContext& tcc );
TCGen Unify( const Term& lhs, const Term& rhs, const TypeCheckingContext& tcc );
optional< Term > HalfUnify( const Term& lhs, TypeCheckingContext& tcc );
}
#endif
|