Recursive functions are handled partially ATM, for common cases like find(l, i) where the function is called recursively with the same argument. The CFG based approach should solve that by walking a call graph until…
Author here: you're right, it is a separate language that keeps Python's syntax (it uses Python's ast module for parsing) and as much of its semantics as possible. It does have extensions, but limited to new type…
Author here: there's no notation, the compiler infers that from function body. If there are more parameters, the result is just an union of those, for example: def choose(a: list[Reading], b: list[Reading], choose_a:…
Recursive functions are handled partially ATM, for common cases like find(l, i) where the function is called recursively with the same argument. The CFG based approach should solve that by walking a call graph until…
Author here: you're right, it is a separate language that keeps Python's syntax (it uses Python's ast module for parsing) and as much of its semantics as possible. It does have extensions, but limited to new type…
Author here: there's no notation, the compiler infers that from function body. If there are more parameters, the result is just an union of those, for example: def choose(a: list[Reading], b: list[Reading], choose_a:…