Branch :
while false do
puts("This should not print")
end
void
while (false) do
puts("This should not print with parens")
end
void
do
i = 0
while (i < 3) do
puts(i)
i = i + 1
end
i
end
0
1
2
3
do
i = 0
while i < 3 do
puts(i)
i = i + 1
end
i
end
0
1
2
3
do
sum = 0
i = 1
while (i <= 5) do
sum = sum + i
i = i + 1
end
sum
end
15
do
sum = 0
i = 1
while i <= 5 do
sum = sum + i
i = i + 1
end
sum
end
15
do
x = 10
while (x > 0) do
if x == 5 do
break
end
puts(x)
x = x - 1
end
x
end
10
9
8
7
6
5
do
x = 10
while x > 0 do
if x == 5 do
break
end
puts(x)
x = x - 1
end
x
end
10
9
8
7
6
5
do
result = []
i = 0
while (i < 3) do
result = [i | result]
i = i + 1
end
result
end
[2, 1, 0]
do
result = []
i = 0
while i < 3 do
result = [i | result]
i = i + 1
end
result
end
[2, 1, 0]
do
i = 0
result = []
while i < 10 do
i = i + 1
if i mod 2 == 0 do
continue
end
result = [i | result]
end
result
end
[9, 7, 5, 3, 1]
do
result = []
i = 0
while i < 10 do
i = i + 1
if i mod 2 == 0 do
continue
end
if i > 7 do
break
end
result = [i | result]
end
result
end
[7, 5, 3, 1]
loop 0
loop 1
loop 2
loop 3
:ok
block :unwind_test do
unwind_protect(do
i = 0
while i < 5 do
puts("unwind loop #{i}")
i = i + 1
if i == 3 do
return "early exit"
end
end
"normal completion"
end, puts("cleanup executed"))
end
unwind loop 0
unwind loop 1
unwind loop 2
cleanup executed
"early exit"