--
-- Copyright 2016, NICTA
--
-- This software may be distributed and modified according to the terms of
-- the GNU General Public License version 2. Note that NO WARRANTY is provided.
-- See "LICENSE_GPLv2.txt" for details.
--
-- @TAG(NICTA_GPL)
--

-- Calculate triangular numbers, the cool way.
--
--   u32 triangular(u32 n) {
--     u32 r = 0;
--     for (u32 i = 0; i < n; ++i) {
--       u32 s = 0;
--       for (u32 j = 0; j < i; ++j) {
--         s += 1;
--       }
--       r += s;
--     }
--     return r;
--   }


id_loopbody: Seq32_bodyParam U32 -> U32
id_loopbody #{acc, idx} = acc + 1

id_f: U32 -> U32
id_f n = seq32[U32](#{frm = 0, to = n, f = id_loopbody, acc = 0})

triangular_loopbody: Seq32_bodyParam U32 -> U32
triangular_loopbody #{acc, idx} = acc + id_f idx

triangular: U32 -> U32
triangular n =
  seq32[U32](#{frm = 0, to = n, f = triangular_loopbody, acc = 0})



-- Loop combinator

-- seq32 begin end increment loop_body accumulators
type Seq32_bodyParam acc = #{
  acc: acc,
  idx: U32
}
type Seq32_body acc = Seq32_bodyParam acc -> acc
type Seq32Param acc = #{
  frm: U32,
  to: U32,  -- to is not inclusive. ie we loop over [from, to)
  f: Seq32_body acc,
  acc: acc
}
seq32: all acc. Seq32Param acc -> acc
