Cells = Slots + Formulas

Sep 18, 2008 07:20

ObservableTracker из JFace.Databinding, демонстрирует интересную технику автоматического подписывания observer'ов.

final IObservableValue firstName = SWTObservables.observeText(firstNameField, SWT.Modify);
final IObservableValue lastName = SWTObservables.observeText(lastNameField, SWT.Modify);
IObservableValue formattedName = new ComputedValue() {
protected Object calculate() {
return lastName.getValue() + firstName.getValue();
}
};

Код фактически работает в двух режимах, первый раз - мета прогон, чтобы фреймворк мог узнать от каких полей зависит вычисляемое значение, чтобы потом при появлении этих событий синхронизировать в том числе и вычисленное значение.


Это как ячейки в электронной таблице. Полноценная реализация данной концепции есть ввиде расширения CLOS. В Lisp никакого метапрогона кода за счет специальных обозначений не требуется.

У реализации Cell's на python есть несколько proof-of-concept демок, показывающих как можно было бы использовать Cells при разработке пользовательского интерфейса, веб сайта или общения с бд.

Интересно, было бы подумать насчет декларативного контроля распростронения изменений между группами ячеек.

Update 19.09.2008 В JavaFX Cells это уже часть языка. Но я не понимаю, зачем они все реализуют lazy cells, совместно с тригеррами, это же прямо идеальный способ создавать сложнодетектируемые баги.

Update 23.09.2008 Очень серьезная реализация концепции Cells - PEAK-Trellis. C транзакциями, и детектированием циклических зависимостей. Правда api красотой и элегантностью не блещут.

gui, python, scheme

Previous post Next post
Up