Довольно обычная задачка: создание расширяемых (настраиваемых) функций, умеющих хранить свое состояние. Например, есть некоторая последовательность чисел, в которой каждое следующее определяется из значений фиксированного количества предыдущих значений.
На Джулии это довольно прямолинейно выражается следующим образом:
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
А можно ли ту же идею реализовать на вашем любимом ЯП? Желательно с минимумом программазма в виде новых типов, классов-хренассов... В моем примере вообще нет упоминания никаких типов данных.