Chcę skompilować trochę kodu Pythona za pomocą tłumacza pypy rpython. Bardzo prosty przykład zabawka, która nic nie robi:Jak zainicjować zestaw() w kodzie, który ma być skompilowany jako rpython pypy?
def main(argv):
a = []
b = set(a)
print b
return 0
def target(driver,args):
return main,None
Gdybym go skompilować jak:
python2.6 ~/Downloads/pypy-1.4.1-src/pypy/translator/goal/translate.py --output trypy trypy.py
To nie kompiluje, raczej po prostu zatrzymuje się z błędami coś takiego:
[translation:ERROR] AttributeError': 'FrozenDesc' object has no attribute 'rowkey'
[translation:ERROR] .. v1 = simple_call((type set), v0)
[translation:ERROR] .. '(trypy:3)main'
[translation:ERROR] Processing block:
[translation:ERROR] [email protected] is a <class 'pypy.objspace.flow.flowcontext.SpamBlock'>
[translation:ERROR] in (trypy:3)main
[translation:ERROR] containing the following operations:
[translation:ERROR] v0 = newlist()
[translation:ERROR] v1 = simple_call((type set), v0)
[translation:ERROR] v2 = str(v1)
[translation:ERROR] v3 = simple_call((function rpython_print_item), v2)
[translation:ERROR] v4 = simple_call((function rpython_print_newline))
[translation:ERROR] --end--
Jeśli wyjmę funkcję set(), to działa. W jaki sposób używasz zestawów w rpythonie?
Wydaje się być problemem z PyPy, a nie kodem. – orlp
Czy próbowałeś 'b = set()'? Następnie "b.add (x)" w razie potrzeby? – TryPyPy
Wygląda na to, że nie używamy zestawów w RPython ... Dobre stare dyktury powinny załatwić sprawę, prawda? – TryPyPy