LINUX.ORG.RU

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

Исправление quasimoto, (текущая версия) :

Я говорю — ты что-то своё придумал и об это разговариваешь. Когда я говорю графы/деревья, то подразумевается что-то весьма конкретное и всем (ну почти :)) известное, но ты начинаешь скакать мыслью непонятно о чём :(

Я на первой странице называл источники.

Открываешь «The Lambda Calculus, Its Syntax and Semantics» и читаешь о чём вообще тут речь. Лямбда-термы представляются (конкретно синтаксически) деревьями, ну или натуральными числами, как хочешь, отношение редукции это бинарное отношение на этом множестве термов (деревьев, чисел), его замыкания (последовательные применения) дают тебе полные редукции, то есть вычисления в значения (если есть).

Простейшая реализация — свёртка дерева.

Потом открываешь «Abstract Computing Machines: A Lambda Calculus Perspective» — и про деревья с редексами и редукциями

The first machine that we are going to talk about is a slightly modified version of the secd machine invented by Landin in 1962 as an abstract evaluator for λ-expressions that employs an applicative order strategy.

The operating principle of this machine centers around the idea of delayed substitutions. Rather than performing β-reductions as atomic operations, the machine partitions them, as a measure to improve runtime efficiency, into two steps that are distributed over time. When encountering β-redices, it just collects mappings of bound variables to (operand) expressions in a runtime structure called the environment. All substitutions are subsequently done while traversing the body expressions only once in search of bound-variable occurrences.

и про графы с редукциями

Another concept for performing β-reductions has been proposed by Wadsworth in 1971. It avoids some of the complexity of directly operating on linear representations of expressions, as Berkling’s machine does. The idea is to represent λ-expressions as graphs, i.e., as structures whose inner (or constructor) nodes include pointers to subgraphs, and to realize β-reductions by copying, deleting and rearranging pointers. Reductions are fully effected within the graphs themselves; again there is no environment involved.

The terms graph and graph reduction refer to the fact that, beyond the tree structures generated by the (constructor) syntax of λ-expressions, we have the binding structures of abstractions represented by pointers as well, as a consequence of which we may have subgraphs referenced by several pointer occurrences and also cyclic references.

ЯННП

Говорили про состояния, ты зачем-то заговорил про их наблюдения. Ну и что значит на метауровне — на уровне описания/исполнения машины (а не того что она исполняет — не на уровне термов там, например) её состояния прекрасно видны (например, как значения runtime system объектов — их же в коде RTS можно видеть, без этого вообщем-то и никак, ты даже можешь сделать и предоставить в исходный язык stop_the_world(); show_world_state(); — даже на основном уровне всё видно).

Фишка в том, что это _одно_ выражение.

А откуда ты знаешь?

Почитай что-нибудь по теме, вот ещё — http://research.microsoft.com/en-us/um/people/simonpj/papers/pj-lester-book/, http://www.scs.stanford.edu/11au-cs240h/notes/ghc-slides.html.

Выбрось своё неправильное понимание понятия «состояние». Это несколько не то, что ты думаешь.

Где конкретно моё неправильное понимание чего вообще и что я думаю? :)

Пример функции с несколькими состояниями был мною выше продемонстрирован. Но там пришлось использовать два банкомата(и связь, которая то есть, то нет), и мне бегать между ними, и (не)снимать деньги.

См. первый абзац, хз о чём ты вообще.

Исходная версия quasimoto, :

Я говорю — ты что-то своё придумал и об это разговариваешь. Когда я говорю графы/деревья, то подразумевается что-то весьма конкретное и всем (ну почти :)) известное, но ты начинаешь скакать мыслью непонятно о чём :(

Я на первой странице называл источники.

Открываешь «The Lambda Calculus, Its Syntax and Semantics» и читаешь о чём вообще тут речь. Лямбда-термы представляются (конкретно синтаксически) деревьями, ну или натуральными числами, как хочешь, отношение редукции это бинарное отношение на этом множестве термов (деревьев, чисел), его замыкания (последовательные применения) дают тебе полные редукции, то есть вычисления в значения (если есть).

Простейшая реализация — свёртка дерева.

Потом открываешь «Abstract Computing Machines: A Lambda Calculus Perspective» — и про деревья с редексами и редукциями

The first machine that we are going to talk about is a slightly modified version of the secd machine invented by Landin in 1962 as an abstract evaluator for λ-expressions that employs an applicative order strategy.

The operating principle of this machine centers around the idea of delayed substitutions. Rather than performing β-reductions as atomic operations, the machine partitions them, as a measure to improve runtime efficiency, into two steps that are distributed over time. When encountering β-redices, it just collects mappings of bound variables to (operand) expressions in a runtime structure called the environment. All substitutions are subsequently done while traversing the body expressions only once in search of bound-variable occurrences.

и про графы с редукциями

Another concept for performing β-reductions has been proposed by Wadsworth in 1971. It avoids some of the complexity of directly operating on linear representations of expressions, as Berkling’s machine does. The idea is to represent λ-expressions as graphs, i.e., as structures whose inner (or constructor) nodes include pointers to subgraphs, and to realize β-reductions by copying, deleting and rearranging pointers. Reductions are fully effected within the graphs themselves; again there is no environment involved.

The terms graph and graph reduction refer to the fact that, beyond the tree structures generated by the (constructor) syntax of λ-expressions, we have the binding structures of abstractions represented by pointers as well, as a consequence of which we may have subgraphs referenced by several pointer

occurrences and also cyclic references.

ЯННП

Говорили про состояния, ты зачем-то заговорил про их наблюдения. Ну и что значит на метауровне — на уровне описания/исполнения машины (а не того что она исполняет — не на уровне термов там, например) её состояния прекрасно видны (например, как значения runtime system объектов — их же в коде RTS можно видеть, без этого вообщем-то и никак, ты даже можешь сделать и предоставить в исходный язык stop_the_world(); show_world_state(); — даже на основном уровне всё видно).

Фишка в том, что это _одно_ выражение.

А откуда ты знаешь?

Почитай что-нибудь по теме, вот ещё — http://research.microsoft.com/en-us/um/people/simonpj/papers/pj-lester-book/, http://www.scs.stanford.edu/11au-cs240h/notes/ghc-slides.html.

Выбрось своё неправильное понимание понятия «состояние». Это несколько не то, что ты думаешь.

Где конкретно моё неправильное понимание чего вообще и что я думаю? :)

Пример функции с несколькими состояниями был мною выше продемонстрирован. Но там пришлось использовать два банкомата(и связь, которая то есть, то нет), и мне бегать между ними, и (не)снимать деньги.

См. первый абзац, хз о чём ты вообще.