И еще
Писать GUI на хаскеле - это все равно, что писать GUI на SQL.
Если обернуть фразу - то для того, чтобы сделать нормальный GUI фреймворк для хаскеля (а не сплошную имитацию императивщины на монадах), нужно представить GUI в декларативно-функционально-теоретико-множественном стиле :)
Если обернуть фразу - то для того, чтобы сделать нормальный GUI фреймворк для хаскеля (а не сплошную имитацию императивщины на монадах), нужно представить GUI в декларативно-функционально-теоретико-множественном стиле :)
no subject
Зависимости внутри GUI между элементами проще выражать в виде обычного императивного кода "выбрали строку в гриде->кнопки стали разрешены", а не в виде "Выбрали строку в гриде - событие ушло в адаптер грид-источник данных -> адаптер поменял модель -> пошло событие "модель изменена" на view -> view перерисовалось". При этом еще желательно что бы изменялись только кнопки, а не весь view целиком, т.е. нужно на каждое изменяемое свойство отдельное событие, и все это писать руками никакой радости нет.
no subject
no subject
no subject
Но как всегда, сначала на это дело не хватило времени, а потом проект законсервировался, т.к. тендер выиграла другая контора :)
no subject
:)
Потом другой контроллер модифицирует то же отображение по-своему, и дальше начнется, потом третий контроллер попробует эту кнопку "восстановить в исходную позицию" сообразно своей логике...
И готово.
no subject
Альтернатива дороге в ад - отладка вызовов функций 20-уровневой вложенности - от кнопки до модели и обратно до view :)
no subject
И включать-выключать кнопки по итогам чтения этого состояния, а не по воле контроллера?
А обмен сигналами об изменении -- через простенький диспетчер, решающий кому надо перерисовываться по итогам изменения набора переменных?
Не вижу что-то тут 20 уровней вложенности.
Банальное отделение логики от представления.
no subject
Соответственно, направлений взаимодействия -- никак не может быть больше 6 (а реально -- 3-5).
Зато один раз написанный и оттестированный MVC-каркас (вкупе с соответствующим проектированием остальной части) всерьез и надолго избавляет от побочных эффектов и непредсказуемого роста сложности в дальнейшем.