<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xml:base="http://lambda-the-ultimate.org">
<channel>
 <title>Lambda the Ultimate - Python</title>
 <link>http://lambda-the-ultimate.org/taxonomy/term/26/0</link>
 <description></description>
 <language>en</language>
<item>
 <title>Google Brain&#039;s Jax and Flax</title>
 <link>http://lambda-the-ultimate.org/google-brain-jax</link>
 <description>&lt;p &gt;Google&#039;s AI division, Google Brain, has two main products for deep learning: TensorFlow and Jax.  While TensorFlow is best known, Jax can be thought of as a higher-level language for specifying deep learning algorithms while automatically eliding code that doesn&#039;t need to run as part of the model.&lt;/p&gt;
&lt;p &gt;&lt;a href=&quot;https://github.com/google/jax&quot;&gt;Jax&lt;/a&gt; evolved from Autograd, and is a combination of Autograd and &lt;a href=&quot;https://www.tensorflow.org/xla&quot;&gt;XLA&lt;/a&gt;.  Autograd &quot;can automatically differentiate native Python and Numpy code. It can handle a large subset of Python&#039;s features, including loops, ifs, recursion and closures, and it can even take derivatives of derivatives of derivatives. It supports reverse-mode differentiation (a.k.a. backpropagation), which means it can efficiently take gradients of scalar-valued functions with respect to array-valued arguments, as well as forward-mode differentiation, and the two can be composed arbitrarily. The main intended application of Autograd is gradient-based optimization.&quot;&lt;/p&gt;
&lt;p &gt;&lt;a href=&quot;https://github.com/google/flax/&quot;&gt;Flax&lt;/a&gt; is then built on top of Jax, and allows for easier customization of existing models.&lt;/p&gt;
&lt;p &gt;What do you see as the future of domain specific languages for AI?&lt;/p&gt;</description>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/8">Implementation</category>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/26">Python</category>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/34">Scientific Programming</category>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/17">Software Engineering</category>
 <pubDate>Fri, 15 Jan 2021 13:59:26 +0000</pubDate>
</item>
<item>
 <title>Transfer of pywer</title>
 <link>http://lambda-the-ultimate.org/node/5539</link>
 <description>&lt;p &gt;Guido van Rossum is &lt;a href=&quot;https://mail.python.org/pipermail/python-committers/2018-July/005664.html&quot;&gt;&quot;resigning&quot;&lt;/a&gt; from being the Python BDFL: &quot;I&#039;m basically giving myself a permanent vacation from being BDFL, and you all will be on&lt;br &gt;
your own.&quot; Apparently running a language can be tiring... It will be interesting to see what happens next.&lt;br &gt;</description>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/26">Python</category>
 <pubDate>Thu, 12 Jul 2018 17:15:46 +0000</pubDate>
</item>
<item>
 <title>Coroutines with async and await syntax (Python 3.5)</title>
 <link>http://lambda-the-ultimate.org/node/5253</link>
 <description>&lt;p &gt;With &lt;a href=&quot;https://docs.python.org/3.5/whatsnew/3.5.html&quot;&gt;Python 3.5 released&lt;/a&gt;, the thing that drew my attention is the support for asynchronous programming through &lt;a href=&quot;https://www.python.org/dev/peps/pep-0492/&quot;&gt;PEP 0492 -- Coroutines with async and await syntax&lt;/a&gt;, which added awaitable objects, coroutine functions, asynchronous iteration, and asynchronous context managers. I found the &lt;a href=&quot;https://mail.python.org/pipermail/python-dev/2015-May/thread.html#139844&quot;&gt;mailing list discussions&lt;/a&gt; (look both above and below) particularly helpful in understanding what exactly is going on.  &lt;/p&gt;</description>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/26">Python</category>
 <pubDate>Thu, 17 Sep 2015 16:08:01 +0000</pubDate>
</item>
<item>
 <title>Ancient use of generators</title>
 <link>http://lambda-the-ultimate.org/node/5252</link>
 <description>&lt;p &gt;Guido van Rossum &lt;a href=&quot;https://mail.python.org/pipermail/python-dev/2015-May/139865.html&quot;&gt;reminisces&lt;/a&gt; a bit about early discussions of generators in the Python community (read the other messages in the thread as well). I think we talked about the articles he mentions way back when. Earlier still, and beyond the discussion by Guido here, was Icon, a clever little language that I have a soft spot for. i don&#039;t think we ever fully assessed its influence on Python and other languages.   &lt;/p&gt;</description>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/7">History</category>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/26">Python</category>
 <pubDate>Thu, 17 Sep 2015 05:58:53 +0000</pubDate>
</item>
<item>
 <title>Python and Scientific Computing</title>
 <link>http://lambda-the-ultimate.org/node/4841</link>
 <description>&lt;p &gt;This &lt;a href=&quot;http://www.talyarkoni.org/blog/2013/11/18/the-homogenization-of-scientific-computing-or-why-python-is-steadily-eating-other-languages-lunch/&quot;&gt;interesting blog post&lt;/a&gt; argues that in recent years Python has gained libraries making it the choice language for scientific computing (over MATLAB and R primarily). &lt;/p&gt;
&lt;p &gt;I find the details discussed in the post interesting. Two small points that occur to me are that in several domains Mathematica is still the tool of choice. From what I could see nothing free, let alone open source, is even in the same ballpark in these cases. Second, I find it interesting that several of the people commenting mentioned IPython. It seems to be gaining ground as the primary environment many people use. &lt;/p&gt;</description>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/26">Python</category>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/34">Scientific Programming</category>
 <pubDate>Tue, 19 Nov 2013 01:50:34 +0000</pubDate>
</item>
<item>
 <title>Project Sikuli</title>
 <link>http://lambda-the-ultimate.org/node/3783</link>
 <description>&lt;p &gt;Picture or &lt;a href=&quot;http://web.mit.edu/newsoffice/2010/screen-shots-0120.html&quot;&gt;screenshot driven programming&lt;/a&gt; from the MIT.&lt;/p&gt;
&lt;p &gt;From the Sikuli &lt;a href=&quot;http://sikuli.csail.mit.edu/&quot;&gt;project page&lt;/a&gt;:&lt;/p&gt;
&lt;blockquote &gt;&lt;p &gt;Sikuli is a visual technology to search and automate graphical user interfaces (GUI) using images (screenshots). The first release of Sikuli contains Sikuli Script, a visual scripting API for Jython, and Sikuli IDE, an integrated development environment for writing visual scripts with screenshots easily.&lt;/p&gt;&lt;/blockquote&gt;</description>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/24">DSL</category>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/10">Paradigms</category>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/26">Python</category>
 <pubDate>Sun, 24 Jan 2010 05:31:57 +0000</pubDate>
</item>
<item>
 <title>The Development of Sage</title>
 <link>http://lambda-the-ultimate.org/node/3712</link>
 <description>&lt;p &gt;&lt;a href=&quot;http://www.sagemath.org/&quot;&gt;Sage&lt;/a&gt; is a project to create a viable free open source alternative to Magma, Maple, Mathematica and Matlab.  The lead developer/manager &lt;a href=&quot;http://sage.math.washington.edu/&quot;&gt;William Stein&lt;/a&gt; has recently written &lt;a href=&quot;http://wstein.org/mathsoftbio/history.pdf&quot;&gt;Mathematical Software and Me: A Very Personal Recollection&lt;/a&gt;,  a rather enjoyable story of his experience with mathematical software,  especially &lt;a href=&quot;http://magma.maths.usyd.edu.au/magma/&quot;&gt;Magma&lt;/a&gt;, and how Sage came to be.  &lt;/p&gt;
&lt;p &gt;One of the difficulties of writing broadly useful math software is the sheer size and scope of such a project.   It is easily outside the abilities of even the most prodigious lone developer.  So the focus of Sage,  at least up until recently,  has been on creating Python-based interfaces to existing mathematical software.   For example, for symbolic calculation the Sage distribution includes &lt;a href=&quot;http://maxima.sourceforge.net/&quot;&gt;Maxima&lt;/a&gt; (written in Common Lisp),  a fork of Macsyma dating back to the early 1980s,  and released as open-source software by the US Department of Energy approximately 10 years ago.   In addition to Maxima,  Sage includes the ability to call out to Magma,  Mathematica, and Maple.&lt;/p&gt;
&lt;p &gt;There are some interesting PLT-related snippets,  for example,  Magma&#039;s language is frequently criticized,  although its algorithms are frequently praised.  In conversations with others, OCaml and Haskell were brought up,  but William Stein chose Python because he felt that it was more accessible.   Also,  &lt;a href=&quot;http://www.axiom-developer.org/&quot;&gt;Axiom&lt;/a&gt;,  which includes the dependently-typed language &lt;a href=&quot;http://www.aldor.org/&quot;&gt;Aldor&lt;/a&gt;, was rejected in favor of Maxima because Maxima was less esoteric and much more widely used.&lt;/p&gt;</description>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/6">General</category>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/7">History</category>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/26">Python</category>
 <pubDate>Fri, 11 Dec 2009 21:53:19 +0000</pubDate>
</item>
<item>
 <title>Unladen Swallow:   LLVM based Python compiler</title>
 <link>http://lambda-the-ultimate.org/node/3491</link>
 <description>&lt;p &gt;The &lt;a href=&quot;http://code.google.com/p/unladen-swallow/wiki/Release2009Q2&quot;&gt;second release&lt;/a&gt; of &lt;a href=&quot;http://code.google.com/p/unladen-swallow/&quot;&gt;Unladen Swallow&lt;/a&gt; was made available yesterday.   The &lt;a href=&quot;http://code.google.com/p/unladen-swallow/wiki/ProjectPlan&quot;&gt;project plan&lt;/a&gt; describes the goals as follows:&lt;/p&gt;
&lt;blockquote &gt;&lt;p &gt;
We want to make Python faster, but we also want to make it easy for large, well-established applications to switch to Unladen Swallow.&lt;/p&gt;
&lt;ol &gt;
&lt;li &gt;Produce a version of Python at least 5x faster than CPython.&lt;/li&gt;
&lt;li &gt;Python application performance should be stable.&lt;/li&gt;
&lt;li &gt;Maintain source-level compatibility with CPython applications.&lt;/li&gt;
&lt;li &gt;Maintain source-level compatibility with CPython extension modules.&lt;/li&gt;
&lt;li &gt;We do not want to maintain a Python implementation forever; we view our work as a branch, not a fork. &lt;/li&gt;
&lt;/ol&gt;
&lt;/p&gt;&lt;/blockquote&gt;
&lt;p &gt;Of course, Google is known for writing a lot of their software in Python,  and now they are trying to speed it up,  just like the V8 project has done for JavaScript.&lt;/p&gt;</description>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/8">Implementation</category>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/26">Python</category>
 <pubDate>Wed, 15 Jul 2009 04:29:25 +0000</pubDate>
</item>
<item>
 <title>Skipping C - SPE and synthetic programming in Python</title>
 <link>http://lambda-the-ultimate.org/node/2398</link>
 <description>&lt;p &gt;&lt;a href=&quot;http://www.corepy.org/pdfs/syn-expr-chris-mueller.pdf&quot;&gt;Expression and Loop Libraries for High-Performance Code Synthesis&lt;/a&gt;. Christopher Mueller and Andrew Lumsdaine. LCPC2006.&lt;/p&gt;
&lt;blockquote &gt;&lt;p &gt;To simultaneously provide rapid application development and high performance, developers of scientific and multimedia applications often mix languages, using scripting languages to glue together high-performance components written in compiled languages. While this can be a useful development strategy, it distances application developers from the optimization process while adding complexity to the development tool chain. Recently, we introduced the Synthetic Programming Environment (SPE) for Python, a library for generating and executing machine instructions at run-time.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p &gt;The authors didn&#039;t show much interest yet in supporting the most widespread ISAs, those for Intel processors. Instead they focus on PowerPC but also Cell. Have fun with Python and PS3 hacking.&lt;/p&gt;
&lt;p &gt;&lt;i &gt;Edit: You might also checkout the &lt;a href=&quot;http://www.osl.iu.edu/~chemuell/new/sp.php&quot;&gt;site&lt;/a&gt; of Christopher Mueller containing related material.&lt;/i&gt;&lt;/p&gt;</description>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/24">DSL</category>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/26">Python</category>
 <pubDate>Tue, 14 Aug 2007 08:11:16 +0000</pubDate>
</item>
<item>
 <title>Google Python Sprint 2007</title>
 <link>http://lambda-the-ultimate.org/node/2396</link>
 <description>&lt;p &gt;Joining this &lt;a href=&quot;http://wiki.python.org/moin/GoogleSprint&quot;&gt;event&lt;/a&gt; (August 22-25) or following the action from afar may be a good way to keep up with Python 3000.&lt;p &gt;
The first alpha release (3.0a1) should be just around the corner.&lt;/p&gt;</description>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/26">Python</category>
 <pubDate>Mon, 13 Aug 2007 21:37:28 +0000</pubDate>
</item>
<item>
 <title>Python 3000 Status Update</title>
 <link>http://lambda-the-ultimate.org/node/2302</link>
 <description>&lt;p &gt;
Guido &lt;a href=&quot;http://www.artima.com/weblogs/viewpost.jsp?thread=208549&quot;&gt;updates&lt;/a&gt; the vision.  Syntax focus seems cancerous, leaving FP sandwiched between set literals and backtick syntax, under Miscellany:

&lt;blockquote &gt;
&lt;ul &gt;
&lt;li &gt;
reduce() is gone. This doesn&#039;t mean I don&#039;t like higher-order functions; it simply reflects that almost all code that uses reduce() becomes more readable when rewritten using a plain old for-loop. (&lt;a href=&quot;http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/148061&quot;&gt;Example&lt;/a&gt;.)
&lt;/li&gt;
&lt;li &gt;
lambda, however, lives.
&lt;/li&gt;
&lt;/blockquote&gt;
&lt;/p&gt;

&lt;p &gt;
Guido says that example &quot;gives reduce() a bad name&quot; which leaves me wondering as to its relevance.  The idea that FP = Miscellany makes me wonder why the more stunning Python success stories (Google) involve FP techniques.  Elsewhere:

&lt;blockquote &gt;
&lt;ul &gt;
&lt;li &gt;
zip(), map(), filter() return iterables
&lt;/li&gt;
&lt;/blockquote&gt;
&lt;/p&gt;

&lt;p &gt;
So FP is not even a free-standing category yet.  I sometimes wish &lt;a href=&quot;http://plt-spy.sourceforge.net&quot;&gt;PLT Spy&lt;/a&gt; would revive, or that some FP language would target Python intermediate code.  The value of Python is often stated to be its libraries.
&lt;/p&gt;

&lt;p &gt;
I also wonder if Python people might build intuition by watching REBOL (=Lisp) people at work.  They seem to enjoy puzzles.  The motivating notion would be &quot;hey! that REBOL trick should be so easy in Python.&quot;
&lt;/p&gt;</description>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/26">Python</category>
 <pubDate>Wed, 20 Jun 2007 07:19:48 +0000</pubDate>
</item>
<item>
 <title>Python in Pardus Linux</title>
 <link>http://lambda-the-ultimate.org/node/2301</link>
 <description>&lt;p &gt;
&lt;a href=&quot;http://www.pardus.org.tr/eng/projects/comar/PythonInPardus.html&quot;&gt;Pardus Linux&lt;/a&gt; is a case study of functional Python.  It&#039;s a Linux distribution built from semi-scratch, the main focii being &lt;a href=&quot;http://www.pardus.org.tr/eng/projects/pisi/PiSi.html&quot;&gt;package management&lt;/a&gt; and init subsystems - places where C and shell script make poor sense.  A funded group has finally tackled these issues.
&lt;/p&gt;

&lt;p &gt;
&lt;blockquote &gt;
A package management software deals a lot with sets, lists, and dependency graphs....We have extensively used functional operators (map, filter, reduce) and list comprehensions, even metaclasses are used in a few places.
&lt;/blockquote&gt;
&lt;/p&gt;

&lt;p &gt;
Someone nudge Guido.  Scheme or Oz might have been the better choice, but give them credit.  They admit frankly to social acceptance issues.
&lt;/p&gt;</description>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/13">Logic/Declarative</category>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/12">Object-Functional</category>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/26">Python</category>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/27">XML</category>
 <pubDate>Tue, 19 Jun 2007 22:55:33 +0000</pubDate>
</item>
<item>
 <title>Charming Python: Decorators make magic easy</title>
 <link>http://lambda-the-ultimate.org/node/1961</link>
 <description>&lt;blockquote &gt;&lt;p &gt;
Python made metaprogramming possible, but each Python version has added slightly different -- and not quite compatible -- wrinkles to the way you accomplish metaprogramming tricks. Playing with first-class function objects has long been around, as have techniques for peaking and poking at magic attributes. With version 2.2, Python grew a custom metaclass mechanism that went a long way, but at the cost of melting users&#039; brains. More recently, with version 2.4, Python has grown &quot;decorators,&quot; which are the newest -- and by far the most user-friendly way, so far -- to perform most metaprogramming.&lt;/blockquote&gt;
&lt;p &gt;
While metaprogramming is inherently a bit confusing, I think &lt;a href=&quot;http://www-128.ibm.com/developerworks/linux/library/l-cpdecor.html&quot;&gt;this article&lt;/a&gt; could have a been a little clearer. Still, it&#039;s a nice highlevel introduction to decorators. &lt;/p&gt;</description>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/15">Meta-Programming</category>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/26">Python</category>
 <pubDate>Fri, 05 Jan 2007 14:40:42 +0000</pubDate>
</item>
<item>
 <title>Type inference for Python</title>
 <link>http://lambda-the-ultimate.org/node/1519</link>
 <description>&lt;p &gt;The subject of type inference for dynamically-checked languages came up in the &lt;a href=&quot;http://lambda-the-ultimate.org/node/1514&quot;&gt;Buried Treasure&lt;/a&gt; thread.  A &lt;a href=&quot;http://lambda-the-ultimate.org/node/1514#comment-17614&quot;&gt;question was raised&lt;/a&gt; in that thread having to do with why static type inference in these languages is difficult.  Since there&#039;s a nascent body of literature which addresses that question, here are a few links to articles and papers about type inference for Python.&lt;/p&gt;
&lt;p &gt;A nice overview can be found in &lt;a href=&quot;http://groups.google.com/group/comp.lang.python/msg/114a25d394769591&quot;&gt;Localized Type Inference of Atomic Types in Python&lt;/a&gt;, a Master&#039;s thesis by Brett Cannon.  The whole thesis is relevant, but for an overview of the issues, see Chapter 3, &quot;Challenges of Inferring Types in Python&quot;.  Chapter 4 summarizes previous attempts involving static inference in Python, including &lt;a href=&quot;http://psyco.sourceforge.net/&quot;&gt;Psyco&lt;/a&gt; (&lt;a href=&quot;http://lambda-the-ultimate.org/classic/message4635.html&quot;&gt;previously&lt;/a&gt; on LtU) and &lt;a href=&quot;http://lambda-the-ultimate.org/classic/message11635.html&quot;&gt;Starkiller&lt;/a&gt;.  The limitations of these attempts are briefly addressed.&lt;/p&gt;
&lt;p &gt;Type inference solutions for Python invariably involve restrictions to make the problem tractable.  The above paper focuses on &quot;inferring atomic types in the local namespace&quot;.  Another approach is described in &lt;a href=&quot;http://www.python.org/workshops/2000-01/proceedings/papers/aycock/aycock.html&quot;&gt;Aggressive Type Inference&lt;/a&gt;, by John Aycock.  Aycock makes an important observation:&lt;/p&gt;
&lt;blockquote &gt;&lt;p &gt;
Giving people a dynamically-typed language does not mean that they write dynamically-typed programs.
&lt;/p&gt;&lt;/blockquote&gt;
&lt;p &gt;The article offers a type inference approach which exploits this observation.  (If the meaning of the above quote isn&#039;t clear, I recommend reviewing our mammoth three-part thread on the subject, &quot;Why type systems are interesting&quot;, &lt;a href=&quot;http://lambda-the-ultimate.org/node/100&quot;&gt;part I&lt;/a&gt;, &lt;a href=&quot;http://lambda-the-ultimate.org/node/175&quot;&gt;part II&lt;/a&gt;, and &lt;a href=&quot;http://lambda-the-ultimate.org/node/220&quot;&gt;part III&lt;/a&gt;.)&lt;/p&gt;
&lt;p &gt;The &lt;a href=&quot;http://codespeak.net/pypy/dist/pypy/doc/news.html&quot;&gt;PyPy&lt;/a&gt; implementation of Python in Python (&lt;a href=&quot;http://lambda-the-ultimate.org/node/1260&quot;&gt;previously&lt;/a&gt; on LtU) uses a restricted subset of Python, called RPython, to implement parts of the language.  RPython is sufficiently static to be able to support full-program type inference.  It is not a &quot;soft&quot; inference approach, and is not designed to be used with ordinary Python programs.  The paper &lt;a href=&quot;http://codespeak.net/pypy/dist/pypy/doc/dynamic-language-translation.html&quot;&gt;Compiling dynamic language implementations&lt;/a&gt; covers the approach used for static analysis of RPython.  The &lt;a href=&quot;http://codespeak.net/pypy/dist/pypy/doc/coding-guide.html&quot;&gt;PyPy Coding Guide&lt;/a&gt;, starting at section 1.4 may also be useful.&lt;/p&gt;
&lt;p &gt;(It may be interesting to note that the PyPy approach is very similar to that used previously for Scheme 48.  The core of Scheme 48 is implemented in PreScheme, a subset of Scheme that supports full-program type inference.)&lt;/p&gt;
&lt;p &gt;Finally, Guido van Rossum has a number of blog entries on the subject of adding optional static typing to Python:&lt;/p&gt;
&lt;ul &gt;
&lt;li &gt;&lt;a href=&quot;http://www.artima.com/weblogs/viewpost.jsp?thread=85551&quot;&gt;Adding Optional Static Typing to Python&lt;/a&gt;
&lt;li &gt;&lt;a href=&quot;http://www.artima.com/weblogs/viewpost.jsp?thread=86641&quot;&gt;Adding Optional Static Typing to Python -- Part II&lt;/a&gt;
&lt;li &gt;&lt;a href=&quot;http://www.artima.com/weblogs/viewpost.jsp?thread=87182&quot;&gt;Optional Static Typing -- Stop the Flames!&lt;/a&gt;
&lt;li &gt;&lt;a href=&quot;http://www.artima.com/weblogs/viewpost.jsp?thread=89161&quot;&gt;Python Optional Typechecking Redux&lt;/a&gt;
&lt;/ul&gt;
&lt;p &gt;If anyone knows of any other good treatments of type inference in Python or similar languages, please post links here.&lt;/p&gt;</description>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/26">Python</category>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/21">Type Theory</category>
 <pubDate>Tue, 30 May 2006 01:54:44 +0000</pubDate>
</item>
<item>
 <title>EasyExtend - Python MetaProgramming</title>
 <link>http://lambda-the-ultimate.org/node/1496</link>
 <description>&lt;p &gt;Just saw &lt;a href=&quot;http://groups.google.com/group/comp.lang.python/browse_thread/thread/6ddbe3537838258c/3053133d67daacbe#3053133d67daacbe&quot;&gt;this announcement&lt;/a&gt; on Google groups / comp.lang.python.&lt;/p&gt;
&lt;blockquote &gt;&lt;p &gt;&lt;a href=&quot;http://www.fiber-space.de/EasyExtend/doc/EE.html&quot;&gt;EasyExtend&lt;/a&gt; is a constructive approach to extend the Python language using pure Python. EasyExtend is developed as a Python framework depending only on tools provided by the CPython interpreter suite ( compiler ) and standard library as well as some pieces of code borrowed from the PyPy project. Opposite to toolkits for writing extension modules in C ( or RPython in future ) the EasyExtend framework is dedicated to extend the language itself by adding new grammar rules and transformation of parse trees. Acting directly on the nodes of syntax trees makes EasyExtend safe and extensible. Moreover the parser and the transformations are considerably fast. While EasyExtend can obviously be used to define &quot;little languages&quot; embedded in Python it can also be used to create Python oriented tools like a code coverage tool based on code generation. For both use-cases examples will be provided.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p &gt;You&#039;ll want to probably want to check out the &lt;a href=&quot;http://www.fiber-space.de/EasyExtend/doc/gallery/gallery.html&quot;&gt;examples&lt;/a&gt;.&lt;/p&gt;</description>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/15">Meta-Programming</category>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/26">Python</category>
 <pubDate>Mon, 22 May 2006 22:37:55 +0000</pubDate>
</item>
</channel>
</rss>
