1 package org.simantics.scl.compiler.elaboration.chr;
3 import org.simantics.scl.compiler.types.TPred;
4 import org.simantics.scl.compiler.types.TVar;
5 import org.simantics.scl.compiler.types.Type;
6 import org.simantics.scl.compiler.types.Types;
7 import org.simantics.scl.compiler.types.kinds.Kinds;
9 import gnu.trove.set.hash.THashSet;
11 public interface CHRRelation {
12 public static final TVar A = Types.var(Kinds.STAR);
14 TVar[] getTypeVariables();
15 Type[] getParameterTypes();
16 TPred[] getTypeConstraints();
17 default String[] getFieldNames() {
20 void collectEnforceEffects(THashSet<Type> effects);
21 void collectQueryEffects(THashSet<Type> effects);