functional 0.7.0 has been released to PyPI and to the project’s own website. Included in this release:

  • Several reference counting-related bugs were squashed.
  • The C implementation now supports Python 2.3, in addition to 2.4 and 2.5.
  • The test suite has been enhanced with fine-grained checking for reference counting bugs to try to keep the C version correct.
  • Two new functions were added, map() and filter(), which function much like the Python built-ins of the same name — but without some of the built-ins’ weird behaviour.

Lastly, I know I said before that functional would include a functional.bwcompat submodule that contained exact copies of some Python builtins, the aim being to ease the transition to Python 3.0 for larger projects (when map() and filter() will no longer ship). I changed my mind for two reasons: 1) converting map() and filter() calls to list comprehensions will be part of a larger Python 2.x -> Python 3.x conversion, and 2) the more I waded in, the more I realised that Python’s built-ins have some really twisted semantics. So, instead of duplicating the builtins, I opted to write sane versions of these functions, which can be found at and functional.filter().

Python Eggs of both versions, for Python 2.3 – 2.5, as well as tarballs, are available from PyPI.