Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Xython/pipe-fn

Open more actions menu

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

9 Commits
9 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

PyPI version

Install

pip install pipe-fn

pipe-fn

Function transformation purely.

from pipe_fn import e


# e is the identity mapping


def add(this, other):
    return this + other


print([1, 2, 3] | e / sum)
# sum([1, 2, 3])
# => 6

print([2, 3, -1] | e ** {'key': lambda x: -x} / sorted)  # set kwargs
# sorted([2, 3, -1], key=lambda x: -x)
# => [3, 2, -1]

print([[1], [2], [3]] | e / sum * ([],))  # set args
# sum([[1], [2], [3]], [])
# => [1, 2, 3]


def my_func(self, *args, **kwargs):
    return self, args, kwargs


print([1, 2, 3]
      | e
      ** dict(a=1, b=2, c=3)  # you should set kwargs first because of the high priority of `**` operator.

      * (4, 5, 6)  # it'okay to change the order of setting `args` and setting `function`.
      / my_func)
# => ([1, 2, 3], (4, 5, 6), {'a': 1, 'b': 2, 'c': 3})


print(1 | e / add * (1,))
# add(1, 1)
# => 2


def double(x):
    return 2 * x


# and then composition
print(1 | (e / add * (2,) + double + double))
# double(double(add(1, 2))
# => 12 = (1 + 2) * 2 * 2


# set single arg
[['a'], ['b']] | e / sum @ [] \
               | e / print
# print(sum([['a'], ['b']], []))
# => [1, 2]

def double(x):
    return 2 * x


[1, 2, 3] | e / std.general.Sum @ double  \
          | e / print
# print(Sum([1,2,3], double))
# => 12

About

A functional style Pipe for CPython. Inspired by https://github.com/JulienPalard/Pipe, but the implementation could be quite different.

Topics

Resources

Stars

Watchers

Forks

Releases

Packages

Used by

Contributors

Languages

Morty Proxy This is a proxified and sanitized view of the page, visit original site.