<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
<META NAME="Generator" CONTENT="MS Exchange Server version 6.5.7638.1">
<TITLE>RE: [Python-3000] AST access (WAS: Adaptation vs. Generic Functions)</TITLE>
</HEAD>
<BODY>
<!-- Converted from text/plain format -->

<P><FONT SIZE=2>Talin wrote:<BR>
&gt; What remains is a consise way to specify bound vs.<BR>
&gt; unbound variables I would prefer not to have to<BR>
&gt; restrict people to using a limited set of pre-declared<BR>
&gt; undefined variables, i.e. X, Y, Z, etc.; plus I<BR>
&gt; would want to be able to associate additional<BR>
&gt; constraints with those unbound variables.<BR>
<BR>
In Dejavu I did that with a separate &quot;kwargs&quot; attribute on the Expression object. You can set the kwargs attribute and it will be used when the Expression is evaluated:<BR>
<BR>
&gt;&gt;&gt; e = logic.Expression(lambda a, b, **kw: a + b + kw['c'])<BR>
&gt;&gt;&gt; e.kwargs.update({'c': 16})<BR>
&gt;&gt;&gt; e.evaluate(1, 8)<BR>
25<BR>
<BR>
The &quot;evaluate&quot; method is a synonym for __call__ as well, and you can override previously-bound kwargs during evaluation:<BR>
<BR>
&gt;&gt;&gt; e(1, 8, c=256)<BR>
265<BR>
<BR>
<BR>
Robert Brewer<BR>
System Architect<BR>
Amor Ministries<BR>
fumanchu@amor.org</FONT>
</P>

</BODY>
</HTML>