return hash;
}
+ @Override
+ public int skeletonHashCode(int hash) {
+ hash = HashCodeUtils.updateWithPreprocessedValue(hash, APPLY_HASH);
+ hash = function.skeletonHashCode(hash);
+ hash = parameter.skeletonHashCode(hash);
+ return hash;
+ }
+
+ @Override
+ public int skeletonHashCode(int hash, TVar[] boundVars) {
+ hash = HashCodeUtils.updateWithPreprocessedValue(hash, APPLY_HASH);
+ hash = function.skeletonHashCode(hash, boundVars);
+ hash = parameter.skeletonHashCode(hash, boundVars);
+ return hash;
+ }
+
public Type getCanonicalFunction() {
if(function instanceof TMetaVar)
function = function.canonical();
return getCanonicalFunction().equalsCanonical(apply.getCanonicalFunction())
&& getCanonicalParameter().equalsCanonical(apply.getCanonicalParameter());
}
+
+ @Override
+ public Type[] skeletonCanonicalChildren() {
+ return new Type[] {Skeletons.canonicalSkeleton(function), Skeletons.canonicalSkeleton(parameter)};
+ }
}