22 lines
647 B
Text
22 lines
647 B
Text
def inc (r : io.ref nat) : io unit :=
|
|
do v ← r.read,
|
|
r.write (v+1),
|
|
io.println (">> " ++ to_string v)
|
|
|
|
def init_array (r : io.ref (array nat)) (n : nat) : io unit :=
|
|
n.mrepeat $ λ i, do
|
|
r.modify $ λ a, a.push (2*i)
|
|
|
|
def show_array_ref (r : io.ref (array nat)) : io unit :=
|
|
do a ← r.swap array.nil,
|
|
a.size.mrepeat (λ i, io.println ("[" ++ to_string i ++ "]: " ++ to_string (a.read' i))),
|
|
r.swap a,
|
|
pure ()
|
|
|
|
def main (xs : list string) : io unit :=
|
|
do let n := xs.head.to_nat,
|
|
r₁ ← io.mk_ref 0,
|
|
n.mrepeat (λ _, inc r₁),
|
|
r₂ ← io.mk_ref (array.nil : array nat),
|
|
init_array r₂ n,
|
|
show_array_ref r₂
|