[](https://travis-ci.org/hachibeeDI/letexpr)
# letexpr
That is python module imitate `let expression` like a Haskell.
And support lazy evaluation.
# Installation
```bash
$ pip install https://github.com/hachibeeDI/letexpr/archive/master.zip
```
# Example
```python
from letexpr import let, expr
# expr(x) = lambda x: lambda: x
answer = (
let()
| ('x', expr(10))
| ('y', expr(20))
| ('size', lambda x, y: x * y)
| ('hoge', lambda x, y: 'fooo')
).in_(lambda x, y, size:
'x = {x}, y = {y}, x * y = {size}'.format(x=x, y=y, size=size))
print answer
# => 'x = 10, y = 20, x * y = 200'
# with List Comprehensions
even_or_odd = [
(let()
| ('_i', expr(str(i)))
| ('r', expr('even' if i % 2 == 0 else 'odd'))
).in_(lambda _i, r:
_i + ' is an ' + r + ' number.')
for i in range(1, 5)]
print even_or_odd
# => ['1 is odd number.', '2 is even number.', '3 is odd number.', '4 is even number.']
# with anonymous function
let_ = (let()
| ('x', expr('x'))
| ('y', expr('y'))
)
@let_.in_()
def _(x, y):
return x + y
print let_.end
# => 'xy'
```
# Testing
```bash
$ pip install nose
$ nosetests --with-doctest
```
# letexpr
That is python module imitate `let expression` like a Haskell.
And support lazy evaluation.
# Installation
```bash
$ pip install https://github.com/hachibeeDI/letexpr/archive/master.zip
```
# Example
```python
from letexpr import let, expr
# expr(x) = lambda x: lambda: x
answer = (
let()
| ('x', expr(10))
| ('y', expr(20))
| ('size', lambda x, y: x * y)
| ('hoge', lambda x, y: 'fooo')
).in_(lambda x, y, size:
'x = {x}, y = {y}, x * y = {size}'.format(x=x, y=y, size=size))
print answer
# => 'x = 10, y = 20, x * y = 200'
# with List Comprehensions
even_or_odd = [
(let()
| ('_i', expr(str(i)))
| ('r', expr('even' if i % 2 == 0 else 'odd'))
).in_(lambda _i, r:
_i + ' is an ' + r + ' number.')
for i in range(1, 5)]
print even_or_odd
# => ['1 is odd number.', '2 is even number.', '3 is odd number.', '4 is even number.']
# with anonymous function
let_ = (let()
| ('x', expr('x'))
| ('y', expr('y'))
)
@let_.in_()
def _(x, y):
return x + y
print let_.end
# => 'xy'
```
# Testing
```bash
$ pip install nose
$ nosetests --with-doctest
```
Metadata
Release files for letexpr 0.3.5
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| letexpr-0.3.5.tar.gz | 3.3 kB | Details |
Release files / letexpr-0.3.5.tar.gz
| Download URL | letexpr-0.3.5.tar.gz |
|---|---|
| Size | 3.3 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
9da51fab22712210ddda998b238af8453ff08236e53f67b6a19e3a3681215237
|
|
BLAKE2b-256 checksum How to use checksums |
ed17c06ef1d590ee586d6f680d9ca6e70580353d46648d1f88c7893bea5ff55d
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |