Skip to main content
Author:

Christoforus Surjoputro <cs_sanmar@yahoo.com>

Date:
2018-12-31
Version:
0.0.1
License:

MIT License

https://travis-ci.org/3mp3ri0r/cpyfunctional.svg?branch=master https://codecov.io/gh/3mp3ri0r/cpyfunctional/branch/master/graph/badge.svg

Introduction

cpyfunctional is python package to help you code python in functional programming paradigm. Series of article by Eric Elliot will tell you why you should code using functional programming.

Python version

This module work on 3.4+. Fully tested on python 3.5.2.

How to install

pip install cpyfunctional

How to use

  1. Import cpyfunctional to your project: import cpyfunctional.

  2. Choose action you want in cpyfunctional package.

compose

compose is a function to execute any callable one by one chaining from last callable to first. This function accept any callable and execute it from last callable to the first and pass every result to next callable until the last.

def inc(number: int) -> int:
    return number + 1

def square(number: int) -> int:
    return number ** 2

cpyfunctional.compose(inc, square)(3) # 10
cpyfunctional.compose(square, inc)(3) # 16

As you can see, it execute callable from last to first. You can also use lambda instead of creating function.

cpyfunctional.compose(lambda number: number + 1, lambda number: number ** 2)(3) # 10

pipe

This function has same functionality to compose but execute callable from first to last.

def inc(number: int) -> int:
    return number + 1

def square(number: int) -> int:
    return number ** 2

cpyfunctional.pipe(inc, square)(3) # 16
cpyfunctional.pipe(square, inc)(3) # 10

func_curry

func_curry is a function to add parameter to callable that called by compose or pipe. This function accept a callable that accept parameter and push previous value to related callable and execute it.

def inc(number: int) -> int:
    return number + 1

def multiple(multiplier: int, prev_number: int) -> int:
    return prev_number * multiplier

cpyfunctional.compose(inc, func_curry(multiple)(6))(3) # 19

This example show that now callable are able to accept any parameter not only from previous result.

How to contribute

Just create an issue when you encounter any problem or contact me personally.

Note

I’m not an expert in functional programming, so any input about FP like any function and/or naming and/or incorrect implementation will be very helpful.

Metadata

Release files for Cpyfunctional 0.0.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for Cpyfunctional 0.0.2
File Size Uploaded
Cpyfunctional-0.0.2.tar.gz 3.3 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for Cpyfunctional 0.0.2
File Interpreter ABI Platform
Cpyfunctional-0.0.2-py3-none-any.whl Python 3 none any Details

Total release size: 7.6 kB

Release files / Cpyfunctional-0.0.2.tar.gz

Download URL Cpyfunctional-0.0.2.tar.gz
Size 3.3 kB
Tags Source
SHA-256 checksum
How to use checksums
844bfe2bd98a725d8e9ffd859839c9c560bf18e35ef91396fa409c84d3a4ff36
BLAKE2b-256 checksum
How to use checksums
f7acfa93f78aea97e8509ed1bbc37f06a7743b396493d3cbe1613a989041a7da
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/1.12.1 pkginfo/1.4.2 requests/2.21.0 setuptools/40.6.3 requests-toolbelt/0.8.0 tqdm/4.28.1 CPython/3.7.1

Release files / Cpyfunctional-0.0.2-py3-none-any.whl

Download URL Cpyfunctional-0.0.2-py3-none-any.whl
Size 4.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
99acfcf6017228399cb9c9e86567982c69e29232e00d8f4a88bd44b65b3344e5
BLAKE2b-256 checksum
How to use checksums
bcb03a2b9f988308e6ba8a82be2eec8374e27494b09353c96ae620fa107d4391
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/1.12.1 pkginfo/1.4.2 requests/2.21.0 setuptools/40.6.3 requests-toolbelt/0.8.0 tqdm/4.28.1 CPython/3.7.1

Release history Release notifications | RSS feed

This release

0.0.2 This release

2 release files

0.0.1

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page