fz

Quick and efficient lambda functions.


License
GPL-2.0
Install
pip install fz==0.1.1

Documentation

_ 0.1

Quick and efficient lambda functions.

What is _?

_ provides a nicer way to define lambda functions for Python 3. The syntax is inspired by C++ std::bind, Scala lambdas, and quicklambda for python.

Syntax

_ lambdas use placeholder objects to represent the arguments to the new lambda. The placeholders look like: _1, _2, ..., all the way to _255 (the maximum number of positional arguments to a function).

To create a lambda, just build up an expression using these placeholders where you want the arguments to go.

Example Uses

Simple Arithmetic

Many lambdas are just simple arithmetic. For example:

>>> from _ import _1
>>> f = _1 + 1
>>> f(1)
2
>>> f(3)
4
>>> (_1 * 2)(3)
6
>>> (_1 ** 2)(3)
9
>>> list(map(_1 ** 2, range(5)))
[0, 1, 4, 9, 16]

Attribute and Item Access

>>> from _ import _1
>>> _1[0]([1, 2])
1
>>> list(map(_1[1], [(0, 1), (2, 3), (4, 5)]))
[0, 2, 4]
>>> _1.imag(1j)
1.0
>>> list(map(_1.imag, (1j, 1 + 2j, 2 + 3j)))
[1, 2, 3]

Function Calls

Because we can only wrap things top-down, we must explicitly wrap a function to be defered.

>>> from _ import _f, _1, _2, _3
>>> def f(a, b):
...     return a + b
>>> _f(f)(_1, _2)(1, 2)
3
>>> g = _f(f)(_1, -1)
>>> g(1)
0

>>> flip = _f(_1)(_3, _2)
>>> flip(print, 1, 2)
2 1

Supported Operations

  • Binary operators
  • Unary operators
  • Attribute access (some names are used for the implementation)
  • Subscript (item access)
  • iter
  • next
  • abs

License

_ is free software, licensed under the GNU General Public License, version 2. For more information see the LICENSE file.

Source

Source code is hosted on github at https://github.com/llllllllll/_.