A Simple Case Test

(contents of the file Case.pco)
general info
{ tag => fun:
    [tag, fun];

  else: 0;

  case@clauses:
    { default: void;
      siz: size(clauses);
      max: 0;
      for(k: 1, k:= k+1, not(k > siz),
        { clause: clauses[k];
          if(clause[1] = else,
             default:= clause[2],
             if(clause[1] > max,
                max:= clause[1],
                void)) });
      tbl[max]: default;
      for(k: 1, k:= k+1, not(k > siz),
        { clause: clauses[k];
          if(clause[1] = else,
             void,
             tbl[clause[1]]:= clause[2]) });
             
      select(tag):
        if(tag > max, default, tbl[tag]) };

  display('case loaded', eoln) }

Back to the metacircular evaluator

This page was made (with lots of hard work!) by Wolfgang De Meuter