![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
Компилятор - это рекурсивная сюръективная функция, отображающая точки пространства операторов на пространство функций и ошибок.
IronPython 2.0b4 Copyright (c) Microsoft Corporation. All rights reserved. >>>meta=lambda *x: 'lambda self, *args, **var: (%s,)[-1]' % ', '.join(x) >>>meta('args[0]+1') 'lambda self, *args, **var: (args[0]+1,)[-1]' >>>t=eval(meta('args[0]+1')) >>>t(None, 0) 1 >>>efor=lambda x, e: 'var.__setitem__((%s),(%s)[:]), [(None, ' % (x,e) >>>efor=lambda x, e: 'var.__setitem__(("enumerator"),(%s)[:]), [(var.__setitem__(%s,eitem), ' % (e,x) >>>eend=lambda x: ')[-1] for eitem in var["enumerator"]]' >>>import sys >>>echo=lambda s: sys.stdout.write('%s\n' % s) >>>meta(efor("x","[1,2,3]"),"echo(var['x'])",eend()) 'lambda self, *args, **var: (var.__setitem__(("enumerator"),([1,2,3])[:]), [(var.__setitem__(x,eitem), , echo(var[\'x\']), )[-1] for eitem in var["enumerator"]],)[-1]' >>>eval(meta(efor("x","[1,2,3]"),"echo(var['x'])",eend())) unexpected token , >>>efor=lambda x, e: 'var.__setitem__(("enumerator"),(%s)[:]), [(var.__setitem__(%s,eitem) ' % (e,x) >>>eval(meta(efor("x","[1,2,3]"),"echo(var['x'])",eend())) <function <lambda$0> at 0x000000000000002D> >>>t=eval(meta(efor("x","[1,2,3]"),"echo(var['x'])",eend())) >>>t(None) name 'x' not defined >>>efor=lambda x, e: 'var.__setitem__(("%s_enum"),(%s)[:]), [(var.__setitem__("%s",eitem) ' % (x,e,x) >>>enext=lambda x: ')[-1] for eitem in var["%s_enum"]]' % x >>>t=eval(meta(efor("x","[1,2,3]"),"echo(var['x'])",enext("x"))) >>>t(None) 1 2 3 [None, None, None] >>>enext=lambda x: ')[-1] for eitem in var["%s_enum"]][-1]' % x >>>t=eval(meta(efor("x","[1,2,3]"),"echo(var['x'])",enext("x"))) >>>t(None) 1 2 3 None >>>