函数式编程 - for和while循环

Joh*_*ohn 5 python functional-programming

我正在尝试用Python 编写forwhile循环 - 函数式编程风格.

我认为for构造很好,但while不起作用,它无限运行.

# for loop
lst = [1, 2, 3]
def fun(e):
   return e
print map(fun, lst)


# while loop
i = 1
def whileloop():
    global i
    print i
    i = i+1
while_FP = lambda: ((i < 5) and whileloop()) or while_FP()
while_FP()
Run Code Online (Sandbox Code Playgroud)

Ale*_*gov 8

FP-style不使用全局状态(全局变量)并最小化副作用(例如IO).while-loop喊声看起来像这样:

fp_while = lambda pred, fun, acc: (lambda val: fp_while(pred, fun, val) if pred(val) else val)(fun(acc))

print fp_while(lambda x: x < 5, lambda x: x + 1, 1)
Run Code Online (Sandbox Code Playgroud)

如果你需要副作用:

def add_and_print(x):
   print x
   return x + 1

fp_while(lambda x: x < 5, add_and_print, 1)
Run Code Online (Sandbox Code Playgroud)

  • 它在Python中很复杂.FP语言很简单:`while pfx | px = x | 否则= pf(fx)` (4认同)