Довольно обычная задачка: создание расширяемых (настраиваемых) функций, умеющих хранить свое состояние. Например, есть некоторая последовательность чисел, в которой каждое следующее определяется из значений фиксированного количества предыдущих значений.
На Джулии это довольно прямолинейно выражается следующим образом:
function makesequencer(next_f)
    let X = Nothing
        function(Y)
            if X == Nothing
                # initialization
                X = Y
            else
                Xnew = next_f(X, Y)
                X = Xnew
            end
            return X
        end
    end
end
А можно ли ту же идею реализовать на вашем любимом ЯП? Желательно с минимумом программазма в виде новых типов, классов-хренассов... В моем примере вообще нет упоминания никаких типов данных.







