When you desugar a language to an lir representation, I imagine the standard is to represent null and other such values in the host language's terms.
So for something like:
def f():
pass
if f() is None:
print("f is none")
python3 treats the return value of f() as None.
In the reference implementation, f() returns (void) and then 'is' does an eq? check with 'None which fails.
So instead of (define None 'None) as in the provided headers, is (define None (void)) a decent approach?
Another issue then is how to print out such values in the host language.
For instance, should special values like None be translated from (void) to 'None inside py-print or from 'None to (void) in comparisons?