import org.simantics.scl.compiler.constants.singletons.TypeOfConstant;
import org.simantics.scl.compiler.constants.singletons.TypeOfProxyConstant;
import org.simantics.scl.compiler.constants.singletons.TypeProxyConstant;
+import org.simantics.scl.compiler.constants.singletons.TypeValueConstant;
import org.simantics.scl.compiler.elaboration.fundeps.Fundep;
import org.simantics.scl.compiler.elaboration.modules.Documentation;
import org.simantics.scl.compiler.elaboration.modules.PrivateProperty;
addEffectConstructor("Proc", new EffectConstructor(Types.PROC));
addEffectConstructor("Exception", new EffectConstructor(Types.EXCEPTION));
+ addTypeAlias("Pure", TVar.EMPTY_ARRAY, Types.NO_EFFECTS);
+
//addTypeDescriptor("->", new StandardTypeConstructor(Kinds.STAR_TO_STAR_TO_STAR, Constants.FUNCTION));
addTypeDescriptor("[]", new StandardTypeConstructor(Types.LIST, Kinds.STAR_TO_STAR, Constants.LIST));
addTypeDescriptor("@", new StandardTypeConstructor(Types.PUNIT, Kinds.STAR, Constants.TUPLE[0]));
);
block.addStatement(apply);
- block.setExit(new Jump(runProcFunction.getReturnCont().createOccurrence(),
+ block.setExit(new Jump(-1, runProcFunction.getReturnCont().createOccurrence(),
x.createOccurrence()));
runProcFunction.addBlock(block);
// typeOf :: Typeable a => a -> Type
addValue("typeOf", TypeOfConstant.INSTANCE)
.documentation = "Returns the type of the value given as a parameter.";
+ addValue("typeValue", TypeValueConstant.INSTANCE);
addValue("typeOfProxy", TypeOfProxyConstant.INSTANCE)
.documentation = "Returns the type of the type proxy given as a parameter.";
addValue("TypeProxy", TypeProxyConstant.INSTANCE);