Skip to content

Latest commit

 

History

History
28 lines (24 loc) · 677 Bytes

counter.md

File metadata and controls

28 lines (24 loc) · 677 Bytes

Counter

Counter:
node Count(reset,x: bool) returns (c: int);
let
  c = if reset then 0
    else if x then (0->pre c) + 1
    else (0->pre c);
tel

counter

(define (counter reset x)
  (~>> (reset x)
       ▽
       (c-loop (~>> (== △ (~>> (c-reg 0) (-< (gen zero) _) c--> (-< (~>> (-< (gen ones) _) (c-add +)) _)))
       ; reset × x × (0->pre c) + 1 × (0->pre c)
                    (c-switch (% _ _)
                              [1> 0]
                              [2> 3>]
                              [else 4>])
                    (-< _ _)
                    ))))