+++ /dev/null
-# Environment A is created here
-
-# outer references environment A
-def outer() do
- # Environment B is created here referencing A
-
- # middle references environment B
- def middle() do
- # Environment C is created here referencing B
-
- # inner references environment C
- def inner() do
- # This is never executed
- 42
- end
-
- inner
- # At this point, environment C falls out of scope
- # However, environment C is still referenced by inner, which is being returned
- end
-
- variable = middle()
- # Now environment B -> variable -> inner -> C -> B
-
- 42
- # Nothing from the cycle is returned and B falls out of scope
- # All references are lost, but reference counts are still > 0 because of the cycle
-end
-
-print(outer())