packages feed

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

initialise-binding initialise-storing initialise-giving finalise-failing finalise-throwing scope
  (collateral (bind
    ("fib_aux",
     allocate-variable (functions
       (tuples ((values)*),
        values))),
  bind
    ("fib",
     allocate-variable (functions
       (tuples ((values)*),
        values))),
  bind
    ("main",
     allocate-variable (functions
       (tuples ((values)*),
        values)))),
   sequential (assign
     (bound ("fib_aux"),
      function closure (scope
        (match
          (given,
           tuple (pattern closure (bind
             ("i",
              allocate-initialised-variable
                (values,
                 given))),
           pattern closure (bind
             ("m",
              allocate-initialised-variable
                (values,
                 given))),
           pattern closure (bind
             ("n",
              allocate-initialised-variable
                (values,
                 given))))),
         handle-return (if-else
           (is-equal
             (assigned (bound ("i")),
              decimal-natural ("1")),
            return (assigned (bound ("n"))),
            return (apply
              (assigned (bound ("fib_aux")),
               tuple (integer-subtract
                 (assigned (bound ("i")),
                  decimal-natural ("1")),
               assigned (bound ("n")),
               integer-add
                 (assigned (bound ("m")),
                  assigned (bound ("n"))))))))))),
   assign
     (bound ("fib"),
      function closure (scope
        (match
          (given,
           tuple (pattern closure (bind
             ("n",
              allocate-initialised-variable
                (values,
                 given))))),
         handle-return (if-else
           (is-equal
             (assigned (bound ("n")),
              decimal-natural ("0")),
            return (decimal-natural ("0")),
            return (apply
              (assigned (bound ("fib_aux")),
               tuple (assigned (bound ("n")),
               decimal-natural ("0"),
               decimal-natural ("1"))))))))),
   assign
     (bound ("main"),
      function closure (scope
        (match
          (given,
           tuple ()),
         handle-return (scope
           (bind
             ("i",
              allocate-initialised-variable
                (values,
                 decimal-natural ("1"))),
            while
              (is-less
                (assigned (bound ("i")),
                 decimal-natural ("8")),
               sequential
                 (print (apply
                   (assigned (bound ("fib")),
                    tuple (assigned (bound ("i"))))),
                  effect (give
                    (bound ("i"),
                     sequential
                       (assign
                         (given,
                          integer-add
                            (assigned (given),
                             1)),
                        assigned (given))))))))))),
   apply
     (assigned (bound ("main")),
      tuple ())))