home *** CD-ROM | disk | FTP | other *** search
/ Oakland CPM Archive / oakcpm.iso / sigm / vol115 / mumatrix.fix < prev    next >
Encoding:
Text File  |  1985-02-10  |  1.8 KB  |  71 lines

  1. FUNCTION NULL (EX1,
  2.   %LOCAL% EX2),
  3.   WHEN ZERO (EX1) EXIT,
  4.   WHEN FREE (EX1 * EX2, EX2) EXIT,
  5. ENDFUN $
  6.  
  7. FUNCTION ` (EX1),
  8.   WHEN ATOM (EX1), EX1  EXIT,
  9.   WHEN APPLY (GET('`, FIRST(EX1)), ARGEX(EX1))  EXIT,
  10.   EX1,
  11. ENDFUN $
  12.  
  13. PROPERTY `, {, FUNCTION (LEX1,
  14.   %LOCAL%  EX1,EX2,LEX2,LEX3,LEX4),
  15.   WHEN COLMAT (EX1: ADJOIN ('{, LEX1)),
  16.     POP (EX1),
  17.     LEX1: LEX2: LEX3: FALSE,
  18.     LOOP
  19.       WHEN ATOM (EX1) EXIT,
  20.       EX2: REST (POP (EX1)),
  21.       PUSH (POP (EX2), LEX1),
  22.       LEX2: ADJOIN (EX2, LEX2),
  23.     ENDLOOP,
  24.     LOOP
  25.       LEX3: ADJOIN (ADJOIN ('[, REVERSE (LEX1)), LEX3),
  26.       WHEN EMPTY (FIRST (LEX2)) EXIT,
  27.       LEX4: REVERSE (LEX2),
  28.       LEX1: LEX2: FALSE,
  29.       LOOP
  30.         WHEN ATOM (LEX4) EXIT,
  31.         EX2: POP (LEX4),
  32.         PUSH (POP (EX2), LEX1),
  33.         LEX2: ADJOIN (EX2, LEX2),
  34.       ENDLOOP,
  35.     ENDLOOP,
  36.     LEX3: ADJOIN ('{, REVERSE (LEX3)) EXIT,
  37.   ADJOIN ('[, MAPFUN ('`, LEX1)),
  38. ENDFUN $
  39.  
  40. PROPERTY `, [, FUNCTION (LEX1),
  41.   ADJOIN ('{, MAPFUN('`, LEX1)),
  42. ENDFUN $
  43.  
  44. FUNCTION ROW1 (EX1, EX2,
  45.   % LOCAL % EX3 ),
  46.   EX3: LIST (),
  47.   LOOP
  48.     BLOCK
  49.       WHEN EX1 EQ EX2, PUSH (1, EX3) EXIT,
  50.       PUSH (0, EX3),
  51.     ENDBLOCK,
  52.     WHEN EX1 EQ 1, ADJOIN ('[, EX3) EXIT,
  53.     EX1: EX1-1,
  54.   ENDLOOP,
  55. ENDFUN $
  56.  
  57. FUNCTION IDMAT (EX1,
  58.   %LOCAL% EX2, EX3),
  59.   WHEN NOT POSITIVE (EX1), LIST ('IDMAT, EX1) EXIT,
  60.   EX2: EX1,
  61.   EX3: FALSE,
  62.   LOOP
  63.     WHEN ZERO (EX2)  EXIT,
  64.     PUSH (ROW1 (EX1, EX2), EX3),
  65.     EX2: EX2 - 1,
  66.   ENDLOOP,
  67.   EX3: ADJOIN ('{, EX3),
  68. ENDFUN $
  69.  
  70. RDS() $
  71.