please have a look at this construction. It throws error c504: The expression has type 'syntaxDomains::tree{@Type}', which is incompatible with the type 'syntaxDomains::tree{::unsigned}' in (VIP 7502):
interface syntaxDomains{@Type}domains
tree = tree(subTree*SubTreeList).
subTree =
leaf(@TypeValue);
branch(tree Tree).
end interface syntaxDomains
implement main
open syntaxDomains{unsigned}clauses
run():-Tree1= tree([]),Tree2= tree([]),_Result= toBoolean(Tree1=Tree2). %the error is hereend implement main
But the code compiles when replacing Tree1 = Tree2 by Tree1 <> Tree2.
interface syntaxDomains
domains
tree{T}= tree(subTree{T}*SubTreeList).
subTree{T}=
leaf(TValue);
branch(tree{T}Tree).
end interface syntaxDomains
implement main
open syntaxDomains
clauses
run():-Tree1= tree([]),Tree2= tree([]),_Result= toBoolean(Tree1=Tree2).
end implement main
I assume that your interface is not only parameterized because of these domains, so in a more realistic set up you can do like this: