/* -------------------------------------------------------------------------- * 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)); /*-------------------------------------------------------------------------*/