LINUX.ORG.RU

История изменений

Исправление 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})