Здравствуйте, Трурль, Вы писали:
R>>Что-то мне эти зависимости не очень нравятся...
Т>Ну, мне тоже не совсем.
Наоборот — зависимости в явном виде это круто. Это 100% изоляция способа вычисления expression от остальной программы, и полная независимость остальных алгоритмов от формул.
Вот все, что надо знать о формулах в остальной части программы:
create_expr( string() ) -> { Expression, Arguments } | value().
%% Формулы получаются из строк.
%% возвращает либо конкретное значение, если его можно вычислить сразу, либо функцию, его вычисляющую.
%% Expression = fun( [ value() ] ) -> value()
%% Функция, вычисляющая значение. Берет список значений аргументом.
%% Arguments = [ ref() ]
%% Список ссылок на аргументы.
%% Пример использования: Expression( [ calc_argument( X ) || X <- Arguments ) -> value().
И все. Не слишком много, не так ли?
R>>А, вот: функция таблицы "=get(Cell)" должна возвращать значение ячейки, указанной в строке/ячейке Cell. Через зависимости не выражается.
Т>А если представить что будет делать функция "=put(Cell;Value)"...
Приведите пример use case, где эти волшебные функции используются, и нельзя обойтись явными зависимостями. Также, оцените, насколько он частый, и какому проценту пользователей электронных таблиц нужен.
Мне кажется, этот процент изчезающе мал. Даже если вам удастся привести use case.