Search code examples
formal-languagestla+

How to get sum of sequence elements in TLA+/PlusCal using operator?


Had an idea to write something like this:

Sum(seq) == 
  LET F[m \subseteq {seq[x]: x \in DOMAIN seq}] ==
    IF Head(seq) = <<>> THEN 0
    ELSE Head(seq) + F[Tail(seq)]
  IN F[seq]

.. but it doesn't work that way.


Solution

  • LET seq == <<1,2,3,4,5,3,5>>
        Sum[ i \in 1..Len(seq) ] == IF i = 1 THEN seq[i] ELSE seq[i] + Sum[i-1]
    IN IF seq = <<>> THEN 0 ELSE Sum[Len(seq)]