Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
4
Task/Currying/Python/currying-1.py
Normal file
4
Task/Currying/Python/currying-1.py
Normal file
|
|
@ -0,0 +1,4 @@
|
|||
def addN(n):
|
||||
def adder(x):
|
||||
return x + n
|
||||
return adder
|
||||
5
Task/Currying/Python/currying-2.py
Normal file
5
Task/Currying/Python/currying-2.py
Normal file
|
|
@ -0,0 +1,5 @@
|
|||
>>> add2 = addN(2)
|
||||
>>> add2
|
||||
<function adder at 0x009F1E30>
|
||||
>>> add2(7)
|
||||
9
|
||||
10
Task/Currying/Python/currying-3.py
Normal file
10
Task/Currying/Python/currying-3.py
Normal file
|
|
@ -0,0 +1,10 @@
|
|||
>>> from functools import partial
|
||||
>>> from operator import add
|
||||
>>> add2 = partial(add, 2)
|
||||
>>> add2
|
||||
functools.partial(<built-in function add>, 2)
|
||||
>>> add2(7)
|
||||
9
|
||||
>>> double = partial(map, lambda x: x*2)
|
||||
>>> print(*double(range(5)))
|
||||
0 2 4 6 8
|
||||
13
Task/Currying/Python/currying-4.py
Normal file
13
Task/Currying/Python/currying-4.py
Normal file
|
|
@ -0,0 +1,13 @@
|
|||
>>> from toolz import curry
|
||||
>>> import operator
|
||||
>>> add = curry(operator.add)
|
||||
>>> add2 = add(2)
|
||||
>>> add2
|
||||
<built-in function add>
|
||||
>>> add2(7)
|
||||
9
|
||||
>>> # Toolz also has pre-curried versions of most HOFs from builtins, stdlib, and toolz
|
||||
>>>from toolz.curried import map
|
||||
>>> double = map(lambda x: x*2)
|
||||
>>> print(*double(range(5)))
|
||||
0 2 4 6 8
|
||||
54
Task/Currying/Python/currying-5.py
Normal file
54
Task/Currying/Python/currying-5.py
Normal file
|
|
@ -0,0 +1,54 @@
|
|||
# AUTOMATIC CURRYING AND UNCURRYING OF EXISTING FUNCTIONS
|
||||
|
||||
|
||||
# curry :: ((a, b) -> c) -> a -> b -> c
|
||||
def curry(f):
|
||||
return lambda a: lambda b: f(a, b)
|
||||
|
||||
|
||||
# uncurry :: (a -> b -> c) -> ((a, b) -> c)
|
||||
def uncurry(f):
|
||||
return lambda x, y: f(x)(y)
|
||||
|
||||
|
||||
# EXAMPLES --------------------------------------
|
||||
|
||||
# A plain uncurried function with 2 arguments,
|
||||
|
||||
# justifyLeft :: Int -> String -> String
|
||||
def justifyLeft(n, s):
|
||||
return (s + (n * ' '))[:n]
|
||||
|
||||
|
||||
# and a similar, but manually curried, function.
|
||||
|
||||
# justifyRight :: Int -> String -> String
|
||||
def justifyRight(n):
|
||||
return lambda s: (
|
||||
((n * ' ') + s)[-n:]
|
||||
)
|
||||
|
||||
|
||||
# CURRYING and UNCURRYING at run-time:
|
||||
|
||||
def main():
|
||||
for s in [
|
||||
'Manually curried using a lambda:',
|
||||
'\n'.join(map(
|
||||
justifyRight(5),
|
||||
['1', '9', '10', '99', '100', '1000']
|
||||
)),
|
||||
|
||||
'\nAutomatically uncurried:',
|
||||
uncurry(justifyRight)(5, '10000'),
|
||||
|
||||
'\nAutomatically curried',
|
||||
'\n'.join(map(
|
||||
curry(justifyLeft)(10),
|
||||
['1', '9', '10', '99', '100', '1000']
|
||||
))
|
||||
]:
|
||||
print (s)
|
||||
|
||||
|
||||
main()
|
||||
Loading…
Add table
Add a link
Reference in a new issue