<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META http-equiv=Content-Type content="text/html; charset=us-ascii">
<META content="MSHTML 6.00.2900.2722" name=GENERATOR>
<STYLE>@page Section1 {size: 8.5in 11.0in; margin: 1.0in 1.25in 1.0in 1.25in; }
P.MsoNormal {
        FONT-SIZE: 12pt; MARGIN: 0in 0in 0pt; FONT-FAMILY: "Times New Roman"
}
LI.MsoNormal {
        FONT-SIZE: 12pt; MARGIN: 0in 0in 0pt; FONT-FAMILY: "Times New Roman"
}
DIV.MsoNormal {
        FONT-SIZE: 12pt; MARGIN: 0in 0in 0pt; FONT-FAMILY: "Times New Roman"
}
A:link {
        COLOR: blue; TEXT-DECORATION: underline
}
SPAN.MsoHyperlink {
        COLOR: blue; TEXT-DECORATION: underline
}
A:visited {
        COLOR: purple; TEXT-DECORATION: underline
}
SPAN.MsoHyperlinkFollowed {
        COLOR: purple; TEXT-DECORATION: underline
}
SPAN.EmailStijl17 {
        COLOR: windowtext; FONT-FAMILY: Arial
}
DIV.Section1 {
        page: Section1
}
</STYLE>
</HEAD>
<BODY lang=EN-US vLink=purple link=blue>
<DIV dir=ltr align=left><SPAN class=252055902-07092005><FONT face=Verdana 
size=2>Thanks for he repro and bug report, Jacques, the bug you see is caused by 
missing implementation of closures in IronPython. The closure implementation is 
on our to-do list.</FONT></SPAN></DIV>
<DIV dir=ltr align=left><SPAN class=252055902-07092005><FONT face=Verdana 
size=2></FONT></SPAN>&nbsp;</DIV>
<DIV dir=ltr align=left><SPAN class=252055902-07092005><FONT face=Verdana 
size=2>Thanks!</FONT></SPAN></DIV>
<DIV dir=ltr align=left><SPAN class=252055902-07092005><FONT face=Verdana 
size=2>Martin</FONT></SPAN></DIV><BR>
<DIV class=OutlookMessageHeader lang=en-us dir=ltr align=left>
<HR tabIndex=-1>
<FONT face=Tahoma size=2><B>From:</B> 
users-ironpython.com-bounces@lists.ironpython.com 
[mailto:users-ironpython.com-bounces@lists.ironpython.com] <B>On Behalf Of 
</B>J. de Hooge<BR><B>Sent:</B> Friday, September 02, 2005 7:18 AM<BR><B>To:</B> 
users-ironpython.com@lists.ironpython.com<BR><B>Subject:</B> [IronPython] self 
not known in lambda function<BR></FONT><BR></DIV>
<DIV></DIV>
<DIV class=Section1>
<P class=MsoNormal><FONT face="Courier New" size=1><SPAN 
style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'"># Hi,</SPAN></FONT></P>
<P class=MsoNormal><FONT face="Courier New" size=1><SPAN 
style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'">#</SPAN></FONT></P>
<P class=MsoNormal><FONT face="Courier New" size=1><SPAN 
style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'"># Might this be a small bug 
in IronPython? 'self' is not known inside the definition of a lambda 
function</SPAN></FONT></P>
<P class=MsoNormal><FONT face="Courier New" size=1><SPAN 
style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'"># I tried to insulate the 
problem in a small (admittedly pointless) program, not to bother you with bulky 
app. code</SPAN></FONT></P>
<P class=MsoNormal><FONT face="Courier New" size=1><SPAN 
style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'"># I am using IronPython 
0.9.1</SPAN></FONT></P>
<P class=MsoNormal><FONT face="Courier New" size=1><SPAN 
style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'">#</SPAN></FONT></P>
<P class=MsoNormal><FONT face="Courier New" size=1>&lt;<AN 
style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'"># Kind 
regards</SPAN></FONT></P>
<P class=MsoNormal><FONT face="Courier New" size=1><SPAN 
style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'"># Jacques de 
Hooge&nbsp;&nbsp; info@geatec.com</SPAN></FONT></P>
<P class=MsoNormal><FONT face="Courier New" size=1><SPAN 
style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'">#</SPAN></FONT></P>
<P class=MsoNormal><FONT face="Courier New" size=1><SPAN 
style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'"># This example will print the 
following:</SPAN></FONT></P>
<P class=MsoNormal><FONT face="Courier New" size=1><SPAN 
style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'"># 
======================================</SPAN></FONT></P>
<P class=MsoNormal><FONT face="Courier New" size=1><SPAN 
style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'">#</SPAN></FONT></P>
<P class=MsoNormal><FONT face="Courier New" size=1><SPAN 
style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'"># 
workaround</SPAN></FONT></P>
<P class=MsoNormal><FONT face="Courier New" size=1><SPAN 
style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'"># Traceback (most recent call 
last):</SPAN></FONT></P>
<P class=MsoNormal><FONT face="Courier New" size=1><SPAN 
style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'">#&nbsp;&nbsp; at 
__main__.Initialize() in C:\activ_dell\prog\fun\src\funDebug.py:line 
29</SPAN></FONT></P>
<P class=MsoNormal><FONT face="Courier New" size=1><SPAN 
style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'">#&nbsp;&nbsp; at 
__main__.lamda$1$f5()</SPAN></FONT></P>
<P class=MsoNormal><FONT face="Courier New" size=1><SPAN 
style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'"># NameError: name 'self' not 
defined</SPAN></FONT></P>
<P class=MsoNormal><FONT face="Courier New" size=1><SPAN 
style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'">#</SPAN></FONT></P>
<P class=MsoNormal><FONT face="Courier New" size=1><SPAN 
style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'"># 
======================================</SPAN></FONT></P>
<P class=MsoNormal><FONT face="Courier New" size=1><SPAN 
style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'"></SPAN></FONT>&nbsp;</P>
<P class=MsoNormal><FONT face="Courier New" size=1><SPAN 
style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'">class 
WorkAround:</SPAN></FONT></P>
<P class=MsoNormal><FONT face="Courier New" size=1><SPAN 
style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
def __init__ (self):</SPAN></FONT></P>
<P class=MsoNormal><FONT face="Courier New" size=1><SPAN 
style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
global this</SPAN></FONT></P>
<P class=MsoNormal><FONT face="Courier New" size=1><SPAN 
style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
this = self</SPAN></FONT></P>
<P class=MsoNormal><FONT face="Courier New" size=1><SPAN 
style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
self.setPrintWithoutParams (lambda: this.printWithParams 
('workaround'))</SPAN></FONT></P>
<P class=MsoNormal><FONT face="Courier New" size=1><SPAN 
style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
</SPAN></FONT></P>
<P class=MsoNormal><FONT face="Courier New" size=1><SPAN 
style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
def printWithParams (self, text):</SPAN></FONT></P>
<P class=MsoNormal><FONT face="Courier New" size=1><SPAN 
style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
print text</SPAN></FONT></P>
<P class=MsoNormal><FONT face="Courier New" size=1><SPAN 
style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
</SPAN></FONT></P>
<P class=MsoNormal><FONT face="Courier New" size=1><SPAN 
style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
def setPrintWithoutParams (self, printWithoutParams):</SPAN></FONT></P>
<P class=MsoNormal><FONT face="Courier New" size=1><SPAN 
style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
self.printWithoutParams = printWithoutParams </SPAN></FONT></P>
<P class=MsoNormal><FONT face="Courier New" size=1><SPAN 
style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'"></SPAN></FONT>&nbsp;</P>
<P class=MsoNormal><FONT face="Courier New" size=1><SPAN 
style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'">workAround&nbsp; = WorkAround 
()</SPAN></FONT></P>
<P class=MsoNormal><FONT face="Courier New" size=1><SPAN 
style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'">workAround.printWithoutParams 
()</SPAN></FONT></P>
<P class=MsoNormal><FONT face="Courier New" size=1><SPAN 
style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'"></SPAN></FONT>&nbsp;</P>
<P class=MsoNormal><FONT face="Courier New" size=1><SPAN 
style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'"></SPAN></FONT>&nbsp;</P>
<P class=MsoNormal><FONT face="Courier New" size=1><SPAN 
style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'"></SPAN></FONT>&nbsp;</P>
<P class=MsoNormal><FONT face="Courier New" size=1><SPAN 
style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'">class 
Problem:</SPAN></FONT></P>
<P class=MsoNormal><FONT face="Courier New" size=1><SPAN 
style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
def __init__ (self):</SPAN></FONT></P>
<P class=MsoNormal><FONT face="Courier New" size=1><SPAN 
style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
self.setPrintWithoutParams (lambda: self.printWithParams 
('problem'))</SPAN></FONT></P>
<P class=MsoNormal><FONT face="Courier New" size=1><SPAN 
style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
</SPAN></FONT></P>
<P class=MsoNormal><FONT face="Courier New" size=1><SPAN 
style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
def printWithParams (self, text):</SPAN></FONT></P>
<P class=MsoNormal><FONT face="Courier New" size=1><SPAN 
style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
print text</SPAN></FONT></P>
<P class=MsoNormal><FONT face="Courier New" size=1><SPAN 
style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
</SPAN></FONT></P>
<P class=MsoNormal><FONT face="Courier New" size=1><SPAN 
style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
def setPrintWithoutParams (self, printWithoutParams):</SPAN></></P>
<P class=MsoNormal><FONT face="Courier New" size=1><SPAN 
style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
self.printWithoutParams = printWithoutParams </SPAN></FONT></P>
<P class=MsoNormal><FONT face="Courier New" size=1><SPAN 
style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'"></SPAN></FONT>&nbsp;</P>
<P class=MsoNormal><FONT face="Courier New" size=1><SPAN 
style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'">problem&nbsp; = Problem 
()</SPAN></FONT></P>
<P class=MsoNormal><FONT face="Courier New" size=1><SPAN 
style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'">problem.printWithoutParams 
()</SPAN></FONT></P>
<P class=MsoNormal><FONT face="Courier New" size=1><SPAN 
style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'"></SPAN></FONT>&nbsp;</P>
<P class=MsoNormal><FONT face=Arial size=2><SPAN 
style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"></SPAN></FONT>&nbsp;</P></DIV></FONT></BODY></HTML>