home *** CD-ROM | disk | FTP | other *** search
/ Crawly Crypt Collection 2 / crawlyvol2.bin / program / misc / mas / masdef / lisp.spc < prev    next >
Encoding:
Text File  |  1990-12-10  |  4.1 KB  |  128 lines

  1.  
  2.  
  3. (* ---------- atom unit --- *)
  4.  
  5. SPECIFICATION ATOM;
  6. (*Atoms specification. *)
  7. (*1*) SORT atom;
  8. (*2*) SIGNATURE Aone     ()          : atom;
  9.       SIGNATURE Azero    ()          : atom;
  10. (*3*) SIGNATURE MUL      (atom,atom) : atom;
  11.       SIGNATURE ADD      (atom,atom) : atom;
  12.       SIGNATURE SUB      (atom)      : atom;
  13.       SIGNATURE SUB      (atom,atom) : atom;
  14.       SIGNATURE POW      (atom,atom) : atom;
  15.       SIGNATURE QUOT     (atom,atom) : atom;
  16.       SIGNATURE REM      (atom,atom) : atom;
  17. (*4*) SIGNATURE Adefault ()          : atom;
  18. (*9*) END ATOM.
  19.  
  20.  
  21. IMPLEMENTATION ATOM;
  22. (*1*) PROCEDURE Aone();
  23.       BEGIN RETURN(1) END Aone;
  24. (*2*) PROCEDURE Azero();
  25.       BEGIN RETURN(0) END Azero;
  26. (*3*) PROCEDURE Adefault();
  27.       BEGIN RETURN(0) END Adefault;
  28. (*9*) END ATOM.
  29.  
  30.  
  31. MODEL RING;
  32. (*Atoms are a model for rings. *)
  33. (*1*) IMPORT ATOM;
  34.       IMPORT INTEGER;
  35. (*2*) MAP READ(atom)       -> IREAD(); 
  36.       MAP WRITE(atom)      -> IWRITE(VAL);
  37.       MAP DEFAULT(atom)    -> Adefault();
  38. (*3*) MAP ONE(atom)        -> Aone();
  39.       MAP ZERO(atom)       -> Azero();
  40. (*4*) MAP PROD(atom,atom)  -> MUL(VAL,VAL);
  41.       MAP SUM(atom,atom)   -> ADD(VAL,VAL);
  42.       MAP DIF(atom,atom)   -> SUB(VAL,VAL);
  43.       MAP NEG(atom)        -> SUB(VAL);
  44. (*9*) END RING.
  45.  
  46.  
  47. (* ---------- list unit --- *)
  48.  
  49. SPECIFICATION Lists; (*LIST is a keyword ! *)
  50. (*List processing specification. *)
  51. (*1*) SORT list, object, atom;
  52. (*2*) SIGNATURE NullList ()                        : list;
  53.       SIGNATURE COMP     (object, list)            : list;
  54.       SIGNATURE LIST     (object, (*...,*) object) : list;
  55.       SIGNATURE CONC     (list,list)               : list;
  56.       SIGNATURE CCONC    (list,list)               : list;
  57. (*3*) SIGNATURE FIRST    (list)                    : object;
  58.       SIGNATURE RED      (list)                    : list;
  59.       SIGNATURE ADV      (list, object, list)      ;
  60. (*4*) SIGNATURE INV      (list)                    : list;
  61.       SIGNATURE CINV     (list)                    : list;
  62. (*5*) SIGNATURE SFIRST   (list,object)             ;
  63.       SIGNATURE SRED     (list,list)               ;
  64. (*7*) SIGNATURE EQUAL    (object,object)           : atom;
  65.       SIGNATURE LENGTH   (list)                    : atom;
  66. (*9*) END Lists.
  67.  
  68.  
  69. IMPLEMENTATION Lists; 
  70. (*1*) PROCEDURE NullList(): list;
  71.       RETURN(LIST()) NullList;
  72. (*9*) END Lists.
  73.  
  74.  
  75. (* ---------- bool unit --- *)
  76.  
  77. SPECIFICATION BOOL;
  78. (*Boolean specification. *)
  79. (*1*) SORT bool, object;
  80. (*2*) SIGNATURE true     ()              : bool;
  81.       SIGNATURE false    ()              : bool;
  82. (*3*) SIGNATURE EQ       (object,object) : bool;
  83.       SIGNATURE NE       (object,object) : bool;
  84.       SIGNATURE LE       (object,object) : bool;
  85.       SIGNATURE GE       (object,object) : bool;
  86.       SIGNATURE LT       (object,object) : bool;
  87.       SIGNATURE GT       (object,object) : bool;
  88. (*4   (*key words*) 
  89.       SIGNATURE OR       (bool,bool)     : bool;
  90.       SIGNATURE AND      (bool,bool)     : bool;
  91.       SIGNATURE NOT      (bool)          : bool;
  92.       *)
  93. (*9*) END BOOL.
  94.  
  95.  
  96. IMPLEMENTATION BOOL;
  97. (*1*) PROCEDURE true();
  98.       BEGIN RETURN(T) END true;
  99. (*2*) PROCEDURE false();
  100.       BEGIN RETURN(LIST()) END false;
  101. (*9*) END BOOL.
  102.  
  103.  
  104. (* ----------- representation unit --- *)
  105.  
  106. SPECIFICATION REPRESENTATION;
  107. (*Representation specification. *)
  108. (*1*) SORT elem, name, rep, pair, bool, func;
  109. (*2*) SIGNATURE NewRep       ()              : rep;
  110.       SIGNATURE SetRep       (name,elem,rep) ;
  111.       SIGNATURE GetRep       (name,rep)      : elem;
  112.       SIGNATURE CopyRep      (rep)           : rep;
  113.       SIGNATURE StepRep      (rep)           : pair;
  114.       SIGNATURE ForEachinRep (rep,func)      : rep;
  115.       SIGNATURE FullRep      (rep)           : bool;
  116.       SIGNATURE Pair         (name,elem)     : pair;
  117.       SIGNATURE NullPair     ()              : pair;
  118. (*9*) END REPRESENTATION.
  119.  
  120.  
  121. IMPLEMENTATION REPRESENTATION; 
  122. (*1*) PROCEDURE Pair(a,b): pair;
  123.       RETURN(LIST(a,b)) Pair;
  124. (*2*) PROCEDURE NullPair(): pair;
  125.       RETURN(LIST()) NullPair;
  126. (*9*) END REPRESENTATION.
  127.  
  128.