使用Python模仿Haskell

时间:2010-03-11 22:07:00

标签: python

Haskell提供类似f = f1的功能。 F2

我如何使用Python模仿它?

例如,如果我必须进行两次'map'操作,有没有办法像map那样做。用Python映射?

x = ['1','2','3'] 
x = map(int,x) 
x = map(lambda i:i+1, x) 

5 个答案:

答案 0 :(得分:2)

我认为你在Python中寻找function composition

你可以这样做:

f = lambda x: f1(f2(x))

答案 1 :(得分:1)

有一些compose操作的提案,但没有一个已经正式化。在此期间,可以使用列表推导或生成器表达式将复杂转换应用于序列。

答案 2 :(得分:1)

def compose(f,g):
  return lambda x: f(g(x))

def inc(x): return x+1

map(compose(inc, int), ['1', '2', '3'])
# [2, 3, 4]

答案 3 :(得分:1)

>>> import functional, functools, operator
>>> f1 = int
>>> f2 = functools.partial(operator.add, 1)
>>> f = functional.compose(f1, f2)
>>> x = map(f, ['1', '2', '3'])

答案 4 :(得分:0)

这个here有一个很好的配方。