/* --------------------------------------------------------------------------
* connect.h: Copyright (c) Mark P Jones 1991-1998. All rights reserved.
* See NOTICE for details and conditions of use etc...
* Hugs version 1.3b, January 1998
*
* Connections between components of the Hugs system
* ------------------------------------------------------------------------*/
/* --------------------------------------------------------------------------
* Standard data:
* ------------------------------------------------------------------------*/
extern Name nameFalse, nameTrue; /* primitive constructor functions */
extern Name nameNil, nameCons;
extern Name nameJust, nameNothing;
extern Name nameUnit;
extern Name nameLT, nameEQ;
extern Name nameGT;
extern Name nameFst, nameSnd; /* standard combinators */
extern Name nameId, nameOtherwise;
extern Name nameNegate, nameFlip; /* primitives reqd for parsing */
extern Name nameFrom, nameFromThen;
extern Name nameFromTo, nameFromThenTo;
extern Name nameFatbar, nameFail; /* primitives reqd for translation */
extern Name nameIf, nameSel;
extern Name nameCompAux;
extern Name namePmInt, namePmFlt; /* primitives for pattern matching */
extern Name namePmInteger;
#if NPLUSK
extern Name namePmNpk, namePmSub; /* primitives for (n+k) patterns */
#endif
extern Name nameUndefMem; /* undefined member primitive */
extern Name nameMakeMem; /* makeMember primitive */
extern Name nameError; /* For runtime error messages */
extern Name nameUndefined; /* A generic undefined value */
extern Name nameBlackHole; /* for GC-detected black hole */
extern Name nameAnd, nameOr; /* for optimisation of && and || */
extern Name nameFromInt, nameFromDouble;/*coercion of numerics */
extern Name nameFromInteger;
extern Name nameEq, nameCompare; /* names used for deriving */
extern Name nameMinBnd, nameMaxBnd;
extern Name nameIndex, nameInRange;
extern Name nameRange;
extern Name nameLe, nameShowsPrec;
extern Name nameMult, namePlus;
extern Name nameConCmp, nameEnRange;
extern Name nameEnIndex, nameEnInRng;
extern Name nameEnToEn, nameEnFrEn;
extern Name nameEnFrom, nameEnFrTh;
extern Name nameEnFrTo;
extern Name nameComp, nameApp; /* composition and append */
extern Name nameShowField; /* display single field */
extern Name nameShowParen; /* wrap with parens */
extern Name nameRangeSize; /* calculate size of index range */
extern Class classMonad, classMonad0; /* Monads and monads with a zero */
extern Class classFixMonad, classFailureMonad;
extern Name nameDone; /* = return () */
extern Name nameReturn, nameBind; /* for translating monad comps */
extern Name nameZero; /* for monads with a zero */
extern Name nameStrict, nameSeq; /* Members of class Eval */
extern Name nameIStrict, nameISeq; /* ... and their implementations */
extern Name namePrint; /* printing primitive */
#if IO_MONAD
extern Type typeProgIO; /* For the IO monad, IO () */
extern Void ioExecute Args((Void)); /* IO monad executor */
extern Name nameUserErr, nameIllegal;/* primitives required for IOError */
extern Name nameNameErr, nameSearchErr;
extern Name nameWriteErr, nameEvalErr;
extern Name nameFileError;
#endif
#if OBJ
extern int gArgc;
extern char **gArgv;
extern Void oExecute Args((Type));
extern Type typeProgO;
extern Type typeOProg;
extern Type typeTemplate;
extern Cell dictMonadTempl, dictFixMonadTempl;
#if O_TK
extern Type typeTkProg;
#endif
extern Name nameDeadlock, nameReqAbort, nameFileError;
extern Name namePutCharSel, namePutStrSel;
extern Name nameSetReaderSel, nameWriteFileSel;
extern Name nameAppendFileSel, nameReadFileSel;
extern Name nameTimeOfDaySel;
extern Name nameProgArgsSel;
extern Name nameGetEnvSel;
extern Name nameTerminateSel;
extern Name namePrimTempl, namePrimAct, namePrimReq;
extern Name namePrimSet, namePrimGet;
extern Name nameCatch, nameRaise, nameRaiseO;
extern Name nameForall, nameWhile, nameFixM;
#if O_IP
extern Name nameInetSel;
extern Name nameNetError;
extern Name nameDeliver, nameClosed;
#endif
#endif
#if LAZY_ST
extern Type typeST; /* Lazy state threads */
extern Name nameSTRun; /* Encapsulator */
#endif
#if NPLUSK
extern Text textPlus; /* Used to recognise n+k patterns */
#endif
extern Text textBang;
extern String repeatStr; /* Repeat last command string */
extern String hugsEdit; /* String for editor command */
extern String hugsPath; /* String for file search path */
extern Type typeArrow; /* Builtin type constructors */
extern Type typeList;
extern Type typeUnit;
extern List stdDefaults; /* List of standard default types */
extern Class classEq; /* `standard' classes */
extern Class classOrd;
extern Class classShow;
extern Class classRead;
extern Class classIx;
extern Class classEnum;
extern Class classEval;
extern Class classBounded;
extern Class classReal; /* `numeric' classes */
extern Class classIntegral;
extern Class classRealFrac;
extern Class classRealFloat;
extern Class classFractional;
extern Class classFloating;
extern Class classNum;
extern Cell *CStackBase; /* pointer to base of C stack */
extern List tyconDefns; /* list of type constructor defns */
extern List typeInDefns; /* list of synonym restrictions */
extern List valDefns; /* list of value definitions */
extern List opDefns; /* list of operator definitions */
extern List classDefns; /* list of class definitions */
extern List instDefns; /* list of instance definitions */
extern List selDefns; /* list of selector lists */
extern List overDefns; /* list of overloaded member defns */
extern List primDefns; /* list of primitive definitions */
extern List defaultDefns; /* default definitions (if any) */
extern Int defaultLine; /* line in which default defs occur*/
extern List evalDefaults; /* defaults for evaluator */
extern Cell inputExpr; /* evaluator input expression */
extern Addr inputCode; /* Code for compiled input expr */
extern Int whnfArgs; /* number of args of term in whnf */
extern Cell whnfHead; /* head of term in whnf */
extern Int whnfInt; /* integer value of term in whnf */
extern Float whnfFloat; /* float value of term in whnf */
extern Long numReductions; /* number of reductions used */
extern Long numCells; /* number of cells allocated */
extern Int numberGcs; /* number of garbage collections */
extern Int cellsRecovered; /* cells recovered by last gc */
extern Bool broken; /* indicates interrupt received */
extern Bool gcMessages; /* TRUE => print GC messages */
extern Bool literateScripts; /* TRUE => default lit scripts */
extern Bool literateErrors; /* TRUE => report errs in lit scrs */
extern Bool failOnError; /* TRUE => error produces immediate*/
/* termination */
extern Bool kindExpert; /* TRUE => display kind errors in */
/* full detail */
/* --------------------------------------------------------------------------
* Function prototypes etc...
* ------------------------------------------------------------------------*/
extern Void everybody Args((Int));
#define RESET 1 /* reset subsystem */
#define MARK 2 /* mark parts of graph in use by subsystem */
#define INSTALL 3 /* install subsystem (executed once only) */
#define EXIT 4 /* Take action immediately before exit() */
#define BREAK 5 /* Take action after program break */
typedef long Target;
extern Void setGoal Args((String, Target));
extern Void soFar Args((Target));
extern Void done Args((Void));
extern String fromEnv Args((String,String));
extern Bool chase Args((List));
extern Void storage Args((Int));
extern Void setLastExpr Args((Cell));
extern Cell getLastExpr Args((Void));
extern List addTyconsMatching Args((String,List));
extern List addNamesMatching Args((String,List));
extern Void input Args((Int));
extern Void consoleInput Args((String));
extern Void projInput Args((String));
extern Void parseScript Args((String,Long));
extern Void parseExp Args((Void));
extern String readFilename Args((Void));
extern String readLine Args((Void));
extern Syntax defaultSyntax Args((Text));
extern String unlexChar Args((Char,Char));
extern Void printString Args((String));
extern Bool isStructSel Args((Cell));
extern Text unStructSel Args((Cell));
extern Text mkStructSel Args((Text));
extern Bool tryOExecute Args((Type));
extern Void staticAnalysis Args((Int));
extern Void tyconDefn Args((Int,Cell,Cell,Cell,List));
extern Void setTypeIns Args((List));
extern Void clearTypeIns Args((Void));
extern Type fullExpand Args((Type));
extern Bool isAmbiguous Args((Type));
extern Void ambigError Args((Int,String,Cell,Type));
extern Void classDefn Args((Int,Cell,Cell));
extern Void instDefn Args((Int,Cell,Cell));
extern Void addTupInst Args((Class,Int));
extern Void addEvalInst Args((Int,Cell,Int,List));
extern Void primDefn Args((Cell,List,Cell));
extern Void defaultDefn Args((Int,List));
extern Void checkExp Args((Void));
extern Void checkDefns Args((Void));
extern Void typeChecker Args((Int));
extern Type typeCheckExp Args((Bool));
extern Cell getDictFor Args((Class,Type));
extern Void typeCheckDefns Args((Void));
extern Bool updateVariance Args((Tycon));
extern Void initVariance Args((Tycon));
extern Int getVarianceAt Args((Type,Int));
extern Char varianceSym Args((Int));
extern Bool equalSchemes Args((Type,Type));
extern Type connectAxioms Args((Tycon,Type,Type));
extern Type liftedType Args((Name,Tycon));
extern Cell rhsExpr Args((Cell));
extern Int rhsLine Args((Cell));
extern Int bindingsLine Args((List));
extern Bool typeMatches Args((Type,Type));
extern Cell superEvid Args((Cell,Class,Class));
extern Bool mtInst Args((Class,Type));
extern Cell makeDictFor Args((Cell,Cell));
extern Void linkPreludeTC Args((Void));
extern Void linkPreludeCM Args((Void));
extern Void kindTCGroup Args((List));
extern Void kindSigType Args((Int,Type));
extern Void kindInst Args((Inst,Cell));
extern Void kindDefaults Args((Int,List));
extern Void compiler Args((Cell));
extern Void compileDefns Args((Void));
extern Void compileExp Args((Void));
extern Bool failFree Args((Cell));
extern Int discrArity Args((Cell));
extern Void machine Args((Int));
extern Addr codeGen Args((Name,Int,Cell));
extern Void implementCfun Args((Name,List));;
extern Void implementSfun Args((Name));
extern Void externalPrim Args((Name,String));
extern Void addCfunTable Args((Tycon));
extern Name succCfun Args((Name));
extern Name nextCfun Args((Name,Name));
extern Name cfunByNum Args((Name,Int));
extern Void unwind Args((Cell));
extern Void eval Args((Cell));
extern Cell evalWithNoError Args((Cell));
extern Void evalFails Args((StackPtr));
extern Void graphForExp Args((Void));
extern Void builtIn Args((Int));
extern Void abandon Args((String,Cell));
extern Void outputString Args((FILE *));
extern Void dialogue Args((Cell));
extern Cell consChar Args((Char));
#if BIGNUMS
extern Bignum bigInt Args((Int));
extern Bignum bigDouble Args((double));
extern Bignum bigNeg Args((Bignum));
extern Cell bigToInt Args((Bignum));
extern Cell bigToFloat Args((Bignum));
extern Bignum bigStr Args((String));
extern Cell bigOut Args((Bignum,Cell,Bool));
extern Bignum bigShift Args((Bignum,Int,Int));
extern Int bigCmp Args((Bignum,Bignum));
#endif
extern Void machdep Args((Int));
extern String findPathname Args((String,String));
#if PROFILING
extern String timeString Args((Void));
#endif
extern Bool startEdit Args((Int,String));
extern Int shellEsc Args((String));
extern Int getTerminalWidth Args((Void));
extern Void normalTerminal Args((Void));
extern Void noechoTerminal Args((Void));
extern Int readTerminalChar Args((Void));
extern Void gcStarted Args((Void));
extern Void gcScanning Args((Void));
extern Void gcRecovered Args((Int,Int));
extern Void gcCStack Args((Void));
extern Void evalExp Args((Void));
/*-------------------------------------------------------------------------*/
syntax highlighted by Code2HTML, v. 0.9.1