home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / hugs101.zip / hugs101sc.zip / hugsdist / src / connect.h < prev    next >
C/C++ Source or Header  |  1995-03-02  |  10KB  |  242 lines

  1. /* --------------------------------------------------------------------------
  2.  * connect.h:    Copyright (c) Mark P Jones 1991-1994.   All rights reserved.
  3.  *        See NOTICE for details and conditions of use etc...
  4.  *              Hugs version 1.0 August 1994, derived from Gofer 2.30a
  5.  *
  6.  * Connections between components of the Hugs system
  7.  * ------------------------------------------------------------------------*/
  8.  
  9. /* --------------------------------------------------------------------------
  10.  * Standard data:
  11.  * ------------------------------------------------------------------------*/
  12.  
  13. extern Name  nameFalse,      nameTrue;    /* primitive constructor functions */
  14. extern Name  nameNil,      nameCons;
  15. extern Name  nameJust,      nameMaybe;
  16. extern Name  nameFatbar,  nameFail;    /* primitives reqd for translation */
  17. extern Name  nameIf,      nameSel;
  18. extern Name  namePmInt,      namePmFlt;    /* primitives for pattern matching */
  19. extern Name  namePmInteger;
  20. #if NPLUSK
  21. extern Name  namePmNpk,      namePmSub;    /* primitives for (n+k) patterns   */
  22. #endif
  23. extern Name  nameUndefMem;         /* undefined member primitive       */
  24. extern Name  nameMakeMem;        /* makeMember primitive           */
  25. extern Name  nameError;            /* for runtime error messages       */
  26. extern Name  nameBlackHole;        /* for GC-detected black hole       */
  27. extern Name  nameAnd,      nameOr;    /* for optimisation of && and ||   */
  28. extern Name  nameOtherwise;
  29. extern Name  nameFromInt, nameFromDouble;/*coercion of numerics           */
  30. extern Name  nameFromInteger;
  31. extern Name  nameEq,      nameOrdcmp;    /* derivable names           */
  32. extern Name  nameIndex,      nameInRange;
  33. extern Name  nameRange;
  34. extern Name  nameLe,      nameShowsPrec;
  35. extern Name  nameMult,      namePlus;
  36. extern Name  nameConCmp,  nameEnRange;
  37. extern Name  nameEnIndex, nameEnInRng;
  38. extern Name  nameEnFrom,  nameEnFrTh;
  39. extern Name  nameEnFrTo;
  40. extern Name  nameComp,      nameApp;    /* composition and append       */
  41. extern Name  nameShowParen;        /* wrap with parens           */
  42. extern Name  nameRangeSize;        /* calculate size of index range   */
  43.  
  44. extern Name  namePrint;            /* printing primitive           */
  45.  
  46. #if IO_DIALOGUE
  47. extern Name  nameReadFile,   nameWriteFile;/* I/O name primitives       */
  48. extern Name  nameAppendFile, nameReadChan;
  49. extern Name  nameAppendChan, nameEcho;
  50. extern Name  nameGetArgs,    nameGetProgName;
  51. extern Name  nameGetEnv;
  52. extern Name  nameSuccess,    nameStr;
  53. extern Name  nameFailure,    nameStrList;
  54. extern Name  nameWriteError;
  55. extern Name  nameReadError,  nameSearchError;
  56. extern Name  nameFormatError,nameOtherError;
  57. #endif
  58. #if    IO_MONAD
  59. extern Type   typeIO, typeProgIO;    /* for the IO monad, IO and IO ()  */
  60. extern Type   typeWorld, typeST;    /* built on top of IO = ST World   */
  61. extern Void   ioExecute Args((Cell));    /* IO monad executor           */
  62. extern Name   nameSTRun;        /* encapsulator               */
  63. extern Type   typeMutVar;        /* type constr for mutable vars       */
  64. #if    HASKELL_ARRAYS
  65. extern Type   typeMutArr;        /* type constr for mutable arrays  */
  66. #endif
  67. #endif
  68. #if    HASKELL_ARRAYS
  69. extern Type typeArray;            /* type constr for arrays       */
  70. #endif
  71.  
  72. extern Text  textPlus;            /* used to recognise n+k patterns  */
  73.  
  74. extern String repeatStr;        /* repeat last command string       */
  75.  
  76. extern Type  typeString;        /* String  == [Char]           */
  77. extern Type  typeDialogue;        /* Dialogue== [Response]->[Request]*/
  78. extern Type  typeBool;
  79. extern Type  typeInt;
  80. extern Type  typeFloat;
  81. extern Type  typeChar;        
  82. extern Type  typeBin;        
  83. extern Type  typeDouble;
  84. extern Type  typeInteger;
  85. extern Type  typeMaybe;
  86.  
  87. extern List  stdDefaults;        /* list of standard default types  */
  88.  
  89. extern Class classEq;            /* `standard' classes           */
  90. extern Class classOrd;
  91. extern Class classText;
  92. extern Class classBinary;
  93. extern Class classIx;
  94. extern Class classEnum;
  95.  
  96. extern Class classReal;            /* `numeric' classes           */
  97. extern Class classIntegral;
  98. extern Class classRealFrac;
  99. extern Class classRealFloat;
  100. extern Class classFractional;
  101. extern Class classFloating;
  102. extern Class classNum;
  103.  
  104. extern Cell  *CStackBase;        /* pointer to base of C stack       */
  105.  
  106. extern List  tyconDefns;        /* list of type constructor defns  */
  107. extern List  typeInDefns;        /* list of synonym restrictions       */
  108. extern List  valDefns;            /* list of value definitions       */
  109. extern List  opDefns;            /* list of operator definitions    */
  110. extern List  classDefns;        /* list of class definitions       */
  111. extern List  instDefns;            /* list of instance definitions    */
  112. extern List  overDefns;            /* list of overloaded member defns */
  113. extern List  primDefns;            /* list of primitive definitions   */
  114. extern List  defaultDefns;        /* default definitions (if any)       */
  115. extern Int   defaultLine;        /* line in which default defs occur*/
  116. extern List  evalDefaults;        /* defaults for evaluator       */
  117. extern Cell  inputExpr;            /* evaluator input expression      */
  118. extern Addr  inputCode;            /* Code for compiled input expr    */
  119.  
  120. extern Int   whnfArgs;            /* number of args of term in whnf  */
  121. extern Cell  whnfHead;            /* head of term in whnf            */
  122. extern Int   whnfInt;            /* integer value of term in whnf   */
  123. extern Float whnfFloat;            /* float value of term in whnf       */
  124. extern Long  numReductions;        /* number of reductions used       */
  125. extern Long  numCells;            /* number of cells allocated       */
  126. extern Int   numberGcs;            /* number of garbage collections   */
  127. extern Int   cellsRecovered;        /* cells recovered by last gc       */
  128. extern Bool  broken;            /* indicates interrupt received    */
  129.  
  130. extern Bool  gcMessages;        /* TRUE => print GC messages       */
  131. extern Bool  literateScripts;        /* TRUE => default lit scripts     */
  132. extern Bool  literateErrors;        /* TRUE => report errs in lit scrs */
  133. extern Bool  failOnError;        /* TRUE => error produces immediate*/
  134.                     /*       termination           */
  135. extern Bool  kindExpert;        /* TRUE => display kind errors in  */
  136.                     /*        full detail           */
  137.  
  138. /* --------------------------------------------------------------------------
  139.  * Function prototypes etc...
  140.  * ------------------------------------------------------------------------*/
  141.  
  142. extern Void   everybody        Args((Int));
  143.  
  144. #define RESET   1        /* reset subsystem                         */
  145. #define MARK    2        /* mark parts of graph in use by subsystem */
  146. #define INSTALL 3        /* install subsystem (executed once only)  */
  147. #define EXIT    4        /* Take action immediately before exit()   */
  148. #define BREAK   5        /* Take action after program break       */
  149.  
  150. typedef long   Target;
  151. extern  Void   setGoal          Args((String, Target));
  152. extern  Void   soFar            Args((Target));
  153. extern  Void   done             Args((Void));
  154. extern  String fromEnv        Args((String,String));
  155.  
  156. extern  Void   storage          Args((Int));
  157. extern  Void   setLastExpr    Args((Cell));
  158. extern  Cell   getLastExpr    Args((Void));
  159. extern    List   addNamesMatching Args((String,List));
  160.  
  161. extern  Void   input            Args((Int));
  162. extern  Void   consoleInput     Args((String));
  163. extern  Void   projInput    Args((String));
  164. extern  Void   parseScript      Args((String,Long));
  165. extern  Void   parseExp         Args((Void));
  166. extern  String readFilename     Args((Void));
  167. extern  String readLine        Args((Void));
  168. extern  Syntax defaultSyntax    Args((Text));
  169. extern  String unlexChar        Args((Char,Char));
  170.  
  171. extern  Void   staticAnalysis    Args((Int));
  172. extern  Void   tyconDefn    Args((Int,Cell,Cell,Cell));
  173. extern  Void   setTypeIns    Args((List));
  174. extern  Void   clearTypeIns    Args((Void));
  175. extern  Bool   isAmbiguous    Args((Type));
  176. extern  Void   ambigError    Args((Int,String,Cell,Type));
  177. extern  Void   classDefn    Args((Int,Cell,Cell));
  178. extern  Void   instDefn        Args((Int,Cell,Cell));
  179. extern  Void   addTupInst    Args((Class,Int));
  180. extern  Void   primDefn        Args((Cell,List,Cell));
  181. extern  Void   defaultDefn    Args((Int,List));
  182. extern  Void   checkExp        Args((Void));
  183. extern  Void   checkDefns    Args((Void));
  184.  
  185. extern  Void   typeChecker    Args((Int));
  186. extern  Type   typeCheckExp    Args((Bool));
  187. extern  Void   typeCheckDefns    Args((Void));
  188. extern  Cell   rhsExpr        Args((Cell));
  189. extern  Int    rhsLine        Args((Cell));
  190. extern  Bool   typeMatches    Args((Type,Type));
  191. extern  Cell   superEvid    Args((Cell,Class,Class));
  192. extern  Bool   mtInst        Args((Class,Type));
  193. extern  Cell   makeDictFor      Args((Cell,Dict));
  194. extern  Void   linkPreludeCore  Args((Void));
  195.  
  196. extern  Void   kindTCGroup    Args((List));
  197. extern  Void   kindSigType    Args((Int,Type));
  198. extern  Void   kindInst        Args((Inst,Cell));
  199. extern  Void   kindDefaults    Args((Int,List));
  200.  
  201. extern  Void   compiler         Args((Cell));
  202. extern  Void   compileDefns     Args((Void));
  203. extern  Void   compileExp       Args((Void));
  204. extern  Bool   refutable    Args((Cell));
  205. extern  Int    discrArity       Args((Cell));
  206.  
  207. extern  Void   machine          Args((Int));
  208. extern  Addr   codeGen          Args((Name,Int,Cell));
  209. extern  Void   addCfunTable    Args((Tycon));
  210. extern  Name   succCfun        Args((Name));
  211. extern  Name   nextCfun        Args((Name,Name));
  212. extern  Void   externalPrim    Args((Name,String));
  213. extern  Void   unwind           Args((Cell));
  214. extern  Void   eval             Args((Cell));
  215. extern  Cell   evalWithNoError  Args((Cell));
  216. extern  Void   evalFails        Args((StackPtr));
  217. extern  Cell   graphForExp    Args((Void));
  218.  
  219. extern  Void   builtIn          Args((Int));
  220. extern  Void   abandon        Args((String,Cell));
  221. extern  Cell   outputString    Args((FILE *,Cell));
  222. extern  Void   dialogue        Args((Cell));
  223. extern  Cell   consChar        Args((Char));
  224. #if BIGNUMS
  225. extern  Bignum bigStr        Args((String));
  226. extern  Cell   bigOut        Args((Bignum,Cell,Bool));
  227. #endif
  228.  
  229. extern  Void   machdep          Args((Int));
  230. extern  String timeString    Args((Void));
  231. extern  Int    shellEsc        Args((String));
  232. extern  Int    getTerminalWidth Args((Void));
  233. extern  Void   normalTerminal    Args((Void));
  234. extern  Void   noechoTerminal    Args((Void));
  235. extern  Int    readTerminalChar Args((Void));
  236. extern  Void   gcStarted    Args((Void));
  237. extern  Void   gcScanning    Args((Void));
  238. extern  Void   gcRecovered    Args((Int));
  239. extern  Void   gcCStack        Args((Void));
  240.  
  241. /*-------------------------------------------------------------------------*/
  242.