monty 0.0.20

A sandboxed, snapshotable Python interpreter written in Rust.
Documentation
# call-external
# BUG: External calls in recursive functions produce wrong results
# Recursion with external calls doesn't compute the correct value


def sum_with_ext(n):
    if n <= 0:
        return 0
    return add_ints(n, sum_with_ext(n - 1))


# sum_with_ext(3) should compute:
#   add_ints(3, sum_with_ext(2))
#   add_ints(3, add_ints(2, sum_with_ext(1)))
#   add_ints(3, add_ints(2, add_ints(1, sum_with_ext(0))))
#   add_ints(3, add_ints(2, add_ints(1, 0)))
#   = 3 + 2 + 1 = 6
result = sum_with_ext(3)
assert result == 6