28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
|
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
|
-
+
|
enum class ValUnifyError
{
NoSolution,
Ambiguous
};
// Unify the provided value with a value placeholder of the specified type,
// Typecheck the provided value with a value placeholder of the specified type,
// and return the result or an error code.
variant< Value, ValUnifyError > ConvertValueToType( const Context& c, const Value& val, const Term& type );
// Helpers to create a standard type construction, as a vector starting with an identity, followed by an optional pointer to predicates
// and an optional pointer to a llvm type.
template< typename I, typename... T >
auto MkStdType( I&& identity, T&&... extra )
|