packages feed

funcons-simple-0.1.0.3: tests/Advanced/Advanced3.fct

initialise-binding initialise-storing initialise-giving finalise-failing finalise-throwing scope
  (collateral (bind
    ("main",
     allocate-variable (functions
       (tuples ((values)*),
        values))),
  bind
    ("insertion_sort",
     allocate-variable (functions
       (tuples ((values)*),
        values)))),
   sequential (assign
     (bound ("main"),
      function closure (scope
        (match
          (given,
           tuple ()),
         handle-return (scope
           (bind
             ("a",
              allocate-nested-vectors (decimal-natural ("5"))),
            sequential
              (effect (give
                (decimal-natural ("5"),
                 sequential
                   (assign
                     (checked index
                       (integer-add
                         (1,
                          decimal-natural ("0")),
                        vector-elements (assigned (bound ("a")))),
                      given),
                    given))),
               effect (give
                 (decimal-natural ("4"),
                  sequential
                    (assign
                      (checked index
                        (integer-add
                          (1,
                           decimal-natural ("1")),
                         vector-elements (assigned (bound ("a")))),
                       given),
                     given))),
               effect (give
                 (decimal-natural ("1"),
                  sequential
                    (assign
                      (checked index
                        (integer-add
                          (1,
                           decimal-natural ("2")),
                         vector-elements (assigned (bound ("a")))),
                       given),
                     given))),
               effect (give
                 (decimal-natural ("8"),
                  sequential
                    (assign
                      (checked index
                        (integer-add
                          (1,
                           decimal-natural ("3")),
                         vector-elements (assigned (bound ("a")))),
                       given),
                     given))),
               effect (give
                 (decimal-natural ("7"),
                  sequential
                    (assign
                      (checked index
                        (integer-add
                          (1,
                           decimal-natural ("4")),
                         vector-elements (assigned (bound ("a")))),
                       given),
                     given))),
               effect (apply
                 (assigned (bound ("insertion_sort")),
                  tuple (assigned (bound ("a"))))),
               scope
                 (bind
                   ("i",
                    allocate-initialised-variable
                      (values,
                       decimal-natural ("0"))),
                  while
                    (is-less
                      (assigned (bound ("i")),
                       length (vector-elements (assigned (bound ("a"))))),
                     sequential
                       (print (assigned (checked index
                         (integer-add
                           (1,
                            assigned (bound ("i"))),
                          vector-elements (assigned (bound ("a")))))),
                        effect (give
                          (bound ("i"),
                           sequential
                             (assign
                               (given,
                                integer-add
                                  (assigned (given),
                                   1)),
                              assigned (given))))))))))))),
   assign
     (bound ("insertion_sort"),
      function closure (scope
        (match
          (given,
           tuple (pattern closure (bind
             ("a",
              allocate-initialised-variable
                (values,
                 given))))),
         handle-return (scope
           (bind
             ("i",
              allocate-initialised-variable
                (values,
                 decimal-natural ("1"))),
            while
              (is-less
                (assigned (bound ("i")),
                 length (vector-elements (assigned (bound ("a"))))),
               sequential
                 (scope
                   (bind
                     ("val_i",
                      allocate-initialised-variable
                        (values,
                         assigned (checked index
                           (integer-add
                             (1,
                              assigned (bound ("i"))),
                            vector-elements (assigned (bound ("a"))))))),
                    scope
                      (bind
                        ("j",
                         allocate-initialised-variable
                           (values,
                            assigned (bound ("i")))),
                       sequential
                         (while
                           (if-else
                             (is-greater
                               (assigned (bound ("j")),
                                decimal-natural ("0")),
                              is-less
                                (assigned (bound ("val_i")),
                                 assigned (checked index
                                   (integer-add
                                     (1,
                                      integer-subtract
                                        (assigned (bound ("j")),
                                         decimal-natural ("1"))),
                                    vector-elements (assigned (bound ("a")))))),
                              false),
                            sequential
                              (effect (give
                                (assigned (checked index
                                  (integer-add
                                    (1,
                                     integer-subtract
                                       (assigned (bound ("j")),
                                        decimal-natural ("1"))),
                                   vector-elements (assigned (bound ("a"))))),
                                 sequential
                                   (assign
                                     (checked index
                                       (integer-add
                                         (1,
                                          assigned (bound ("j"))),
                                        vector-elements (assigned (bound ("a")))),
                                      given),
                                    given))),
                               effect (give
                                 (integer-subtract
                                   (assigned (bound ("j")),
                                    decimal-natural ("1")),
                                  sequential
                                    (assign
                                      (bound ("j"),
                                       given),
                                     given))))),
                          effect (give
                            (assigned (bound ("val_i")),
                             sequential
                               (assign
                                 (checked index
                                   (integer-add
                                     (1,
                                      assigned (bound ("j"))),
                                    vector-elements (assigned (bound ("a")))),
                                  given),
                                given)))))),
                  effect (give
                    (bound ("i"),
                     sequential
                       (assign
                         (given,
                          integer-add
                            (assigned (given),
                             1)),
                        assigned (given))))))))))),
   apply
     (assigned (bound ("main")),
      tuple ())))