История изменений
Исправление monk, (текущая версия) :
В списке функций как действия, так и условия, причём не относительно предыдущего шага, а относительно параметров. Нет однородности результатов и структуры.
Если уж делать из питона хаскелл, то как-то так:
def f2(x):
return stepper({'x': x, 'condition': False},
[lambda env: env.update({'x': env['x'] - 2}) or env,
lambda env: env.update({'result': 1, 'condition': env['x'] < 0}) or env,
lambda env: env.update({'y': 1, 'z': 1}) or env,
w(env) or env])
def w(env):
...
env.update({'result': z-1})
Исправление monk, :
В списке функций как действия, так и условия, причём не относительно предыдущего шага, а относительно параметров. Нет однородности результатов и структуры.
Если уж делать из питона хаскелл, то как-то так:
def f2(x):
return stepper({'x': x, 'condition': True},
[lambda env: env.update({'x': env['x'] - 2}) or env,
lambda env: env.update({'result': 1, 'condition': None if env['x'] < 0 or True}) or env,
lambda env: env.update({'y': 1, 'z': 1}) or env,
w(env) or env])
def w(env):
...
env.update({'result': z-1})
Исправление monk, :
В списке функций как действия, так и условия, причём не относительно предыдущего шага, а относительно параметров. Нет однородности результатов и структуры.
Если уж делать из питона хаскелл, то как-то так:
def f2(x):
return stepper({'x': x, 'condition': True},
[lambda env: env.update({'x': env['x'] - 2}) or env,
lambda env: env.update({'result': 0, 'condition': None if env['x'] < 0 or True}) or env,
lambda env: env.update({'y': 1, 'z': 1}) or env,
w(env) or env])
def w(env):
...
env.update({'result': z-1})
Исходная версия monk, :
В списке функций как действия, так и условия, причём не относительно предыдущего шага, а относительно параметров. Нет однородности результатов и структуры.
Если уж делать из питона хаскелл, то как-то так:
def f2(x):
return stepper({'x': x, 'condition': True},
[lambda env: env.update({'x': env['x'] - 2}) or env,
lambda env: env.update({'result': 1, 'condition': None if x < 2 or True}) or env,
lambda env: env.update({'y': 1, 'z': 1}) or env,
w(env) or env])
def w(env):
...
env.update({'result': z-1})