package code.type;

/**
 * Predefined type names
 *
 * @author Sergio Antoy
 * @since April 15, 2005
 */
public class PredefinedTypes {

    public static final String boolTypeName = "Prelude.Bool";
    public static final TypeConstructor boolType
	= new TypeConstructor(boolTypeName);

    public static final String intTypeName = "Prelude.Int";
    public static final TypeConstructor intType
	= new TypeConstructor(intTypeName);

    public static final String charTypeName = "Prelude.Char";
    public static final TypeConstructor charType
	= new TypeConstructor(charTypeName);

    public static final String floatTypeName = "Prelude.Float";
    public static final TypeConstructor floatType
	= new TypeConstructor(floatTypeName);

    public static final String successTypeName = "Prelude.Success";
    public static final TypeConstructor successType
	= new TypeConstructor(successTypeName);

    public static final String ioWorldTypeName = "Prelude.World";
    public static final TypeConstructor ioWorldType 
        = new TypeConstructor(ioWorldTypeName);

    public static final String ioResTypeName = "Prelude.IORes";
    public static final TypeConstructor ioResType
        = new TypeConstructor(ioResTypeName);

    public static final String ioTypeName = "Prelude.IO";
    public static final TypeConstructor ioType
	= new TypeConstructor(ioTypeName);

    public static final String unitTypeName = "Prelude.()";
    public static final TypeConstructor unitType
	= new TypeConstructor(unitTypeName);

    public static final String listTypeName = "Prelude.[]";
    public static final TypeConstructor listType
	= new TypeConstructor(listTypeName);

    public static final String opaqueTypeName = "java.Opaque";
    public static final TypeConstructor opaqueType
	= new TypeConstructor(opaqueTypeName);

    public static final TypeConstructorApplication stringType
	= new TypeConstructorApplication(listTypeName,charType);

    public static final TypeConstructorApplication outputType
	= new TypeConstructorApplication(ioTypeName, unitType);

    // Marker type for FunctionTypes
    static final String functionTypeName = "FunctionType";
    static final TypeConstructor functionType
                      	= new TypeConstructor(functionTypeName);

    // Marker type for TCAs
    static final String tcaTypeName = "TCAType";
    static final TypeConstructor tcaType
                      	= new TypeConstructor(tcaTypeName);
}

