Plan 9 from Bell Labs’s /usr/web/sources/contrib/fernan/nhc98/tests/nofib/real/anna/big.cor

Copyright © 2021 Plan 9 Foundation.
Distributed under the MIT License.
Download the Plan 9 distribution.



day ::= Monday     |
        Tuesday    | 
        Wednesday  |
        Thursday   |
        Friday     |
        Saturday   |
        Sunday ;

domain ::= Unit  |
           Lift (domain);

pair a b ::= Pair a b;

list a ::= Nil | Cons a (list a);

tree a ::= Leaf | Branch (tree a) a (tree a);

assoc a b ::= NilAssoc |
              Assoc a b (assoc a b) ;

;;

z4 l1 l2
   = case l1 of
        Nil -> Nil;
        Cons x xs -> case l2 of
                        Nil -> Nil;
                        Cons y ys -> Cons (x+y) (z4 xs ys)
                     end
     end;

z6 l1 l2
   = case l1 of
        Nil -> Nil;
        Cons x xs -> case l2 of
                        Nil -> Nil;
                        Cons y ys -> Cons (z4 x y) (z6 xs ys)
                     end
     end;

z8 l1 l2
   = case l1 of
        Nil -> Nil;
        Cons x xs -> case l2 of
                        Nil -> Nil;
                        Cons y ys -> Cons (z6 x y) (z8 xs ys)
                     end
     end;

z10 l1 l2
   = case l1 of
        Nil -> Nil;
        Cons x xs -> case l2 of
                        Nil -> Nil;
                        Cons y ys -> Cons (z8 x y) (z10 xs ys)
                     end
     end;

f2 a b 
  = case a == 0 of
       True -> b;
       False -> f2 b a
    end;

f3 a b c 
  = case a == 0 of
       True -> b;
       False -> f3 c b a
    end;

f4 a b c d
  = case a == 0 of
       True -> b;
       False -> f4 d c b a 
    end;

f5 a b c d e
  = case a == 0 of
       True -> b;
       False -> f5 e d c b a 
    end;

f6 a b c d e f
  = case a == 0 of
       True -> b;
       False -> f6 f e d c b a 
    end;

f7 a b c d e f g
  = case a == 0 of
       True -> b;
       False -> f7 g f e d c b a
    end;

p2 a b                       = a;

p3 a b c                     = a + c;

p4 a b c d                   = a + c;

p5 a b c d e                 = a + c + e;

p6 a b c d e f               = a + c + e;

p7 a b c d e f g             = a + c + e + g;

p8 a b c d e f g h           = a + c + e + g;

p9 a b c d e f g h i         = a + c + e + g + i;

p10 a b c d e f g h i j      = a + c + e + g + i;

p11 a b c d e f g h i j k    = a + c + e + g + i + k;

p12 a b c d e f g h i j k l  = a + c + e + g + i + k;

s2 a b                       = a + b;

s4 a b c d                   = a + b + c + d;

s6 a b c d e f               = a + b + c + d + e + f;

s8 a b c d e f g h           = a + b + c + d + e + f + g + h;

s10 a b c d e f g h i j      = a + b + c + d + e + f + g + h + i + j;

s12 a b c d e f g h i j k l  = a + b + c + d + e + f + g + h + i + j + k + l;


l2 a b                       = 37;

l4 a b c d                   = 37;

l6 a b c d e f               = 37;

l8 a b c d e f g h           = 37;

l9 a b c d e f g h i         = 37;

l10 a b c d e f g h i j      = 37;

l12 a b c d e f g h i j k l  = 37;

bottomAny = bottomAny;

             bigs  d l2 = case l2 of
                                Nil -> Nil;
                                Cons l2x l2xs ->
                                   case l2x>d of
                                      True -> Cons l2x (bigs d l2xs);
                                      False -> bigs d l2xs
                                   end
                             end;

             smalls d l2 = case l2 of
                                Nil -> Nil;
                                Cons l2x l2xs ->
                                   case l2x<=d of
                                      True -> Cons l2x (smalls d l2xs);
                                      False -> smalls d l2xs
                                   end
                             end;

qsort l = 
          
          case l of
              Nil -> Nil;
              Cons h t -> append (qsort (smalls h t)) 
                                 (Cons h (qsort (bigs h t)))
          end;

topInt = 42;

domainHeight d
   = case d of
        Unit -> 1;
        Lift d1 -> 1 + domainHeight d1
     end;

workingHours d
   = case d of
        Saturday -> 0;
        Sunday -> 0;
        Monday -> 2;
        Tuesday -> 4;
        Wednesday -> 5;
        Thursday -> 3;
        Friday -> 1
     end;

incHead l = case l of
              Nil -> Nil;
              Cons a as -> Cons (a+1) as
            end;

tricky a b = case a==0 of
                True -> b;
                False -> tricky (a-1) b
             end;

length x = case x of
              Nil -> 0;
              Cons a as -> 1 + length as
           end;

sum x = case x of
           Nil -> 0;
           Cons a as -> a + sum as
        end;

append x y = case x of
                Nil -> y;
                Cons a as -> Cons a (append as y)
             end;

rev x = case x of
           Nil -> Nil;
           Cons a as -> append (rev as) (Cons a Nil)
        end;

take n l = case l of 
              Nil -> Nil;
              Cons x xs -> case (n==0) of
                              True -> Nil;
                              False ->  Cons x (take (n-1) xs)
                           end
           end;

drop n l = case l of
              Nil -> Nil;
              Cons x xs -> case (n==0) of
                              True -> Cons x xs;
                              False -> drop (n-1) xs
                           end
           end;

first p = case p of Pair a b -> a end;

second p = case p of Pair a b -> b end;

mirror t = case t of
             Leaf -> Leaf;
             Branch l x r -> Branch (mirror r) x (mirror l)
           end;

sumt t = case t of
            Leaf -> 0;
            Branch l x r -> sumt l + x + sumt r
         end;

aLookupDef al key default
   = case al of
        NilAssoc -> default;
        Assoc a b abs -> case a==key of
                            True -> b;
                            False -> aLookupDef abs key default
                         end
     end;

aDomain al 
   = case al of
       NilAssoc -> Nil;
       Assoc a b abs -> Cons a (aDomain abs)
     end;

aInverse al
   = case al of
       NilAssoc -> NilAssoc;
       Assoc a b abs -> Assoc b a (aInverse abs)
     end;

flatten t = case t of
               Leaf -> Nil;
               Branch l x r -> append (flatten l) (Cons x (flatten r))
            end;

insert x t = case t of
                Leaf -> Branch Leaf x Leaf;
                Branch l x1 r ->
                 case x==x1 of
                    True -> Branch l x1 r;
                    False -> case x<x1 of
                                True -> Branch (insert x l) x1 r;
                                False -> Branch l x1 (insert x r)
                             end
                 end
            end;

listToTree l =
   letrec ltt = \tr li -> case li of
                             Nil -> tr;
                             Cons x xs -> ltt (insert x tr) xs
                          end
   in ltt Leaf l;

nodups l = flatten (listToTree l);



Bell Labs OSI certified Powered by Plan 9

(Return to Plan 9 Home Page)

Copyright © 2021 Plan 9 Foundation. All Rights Reserved.
Comments to webmaster@9p.io.