Do tail recursion without overflowing with generators and functions.
Project description
Functional Recursion
Do tail recursion without overflowing with generators and functions.
Why?
I am coming from a background of functional programming languages where loops are not standard. Instead, recursion is used to achieve the same result more succinctly.
Overview
It provides:
- Infinite recursion with return
- Infinite recursion with generators (yield)
Using this has the following advantages:
- Allows for more understandable code given the right situation
- Avoid bugs because of deeply nested loops
Instructions
Run in the console
python3 -m pip install functional_recursion
(Use python or python3 depending on your environment)
And to use it
from functional_recursion import recur, recur_yield, tail_recursive, tail_recursive_yield
@tail_recursive
def fib_decorator_recursive(n, last_two=None):
if last_two is None:
last_two = (0, 1)
if n == 0:
return last_two[1]
last_two = (last_two[1], sum(last_two))
return recur(n - 1, last_two)
@tail_recursive_yield
def fib_decorator_recursive_generator(last_two=None):
if last_two is None:
last_two = (0, 1)
last_two = (last_two[1], sum(last_two))
return recur_yield(last_two, yield_val=last_two[0])
* See the complete examples and performance times here.
Authors
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file functional_recursion-1.0.0.tar.gz.
File metadata
- Download URL: functional_recursion-1.0.0.tar.gz
- Upload date:
- Size: 3.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.5.0 importlib_metadata/4.8.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.8.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
886610fdaa7bed2adafba45d498eca0b0d428e756c8fc2795eaba76296f09dac
|
|
| MD5 |
b918da3ac48610753fa7e6e09a9b3e2e
|
|
| BLAKE2b-256 |
a4d54575f560be544f10cacd4ae9ae3d499fb32f3060dca0a494a705d5c27696
|
File details
Details for the file functional_recursion-1.0.0-py3-none-any.whl.
File metadata
- Download URL: functional_recursion-1.0.0-py3-none-any.whl
- Upload date:
- Size: 3.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.5.0 importlib_metadata/4.8.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.8.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
cc087cd2258a7d896b725322d0c77f556d4cfefe722a0c8bbdae10f8082e256d
|
|
| MD5 |
74112e9e4e6eebc9cdbb544ba2aac116
|
|
| BLAKE2b-256 |
1851f908fe0d6ac145e5a6762bcdb93d711d3155670793b4891cde7293696233
|