У меня появилось свободное время, которое я хочу плодотворно потратить на написание оконного менеджера. Хочу реализовать в нем многопоточность всего, что параллелится, возможность изменения самого себя в рантайме. 6е чувство в месте с 7й полуастральной чакрой подсказывает, что мне придется писать какой-то хитрый DSL, а может и не один. Глас с небес указал на 2 инструмента — Haskell и Lisp. От правильности выбора между ними будет зависеть попаду я в рай или в АдЪ. Сам я предпочитаю послушать преимущества и того, и другого пристанища от тех, кто уже побывал за гранью Дзена.
Поле для дискуссии — наиболее кошерные реализации Common Lisp и (template)Haskell для решения поставленной задачи, которая предполагает что super-druper-WM обладает такими свойствами:
- Многопоточна и распараллелена вдоль и поперек
- Написана на проблемно-ориентированном DSL
- Плагинная структура, возможность изменения функциональности, подключение плагинов прямо в рантайме
- Скорость _без_ уродования кода, как в текстах программ на shootout.alioth.debian.org
- Хочется ООП!!! Можно в виде CLOS или подобного
Отдельная просьба. Объясните на пальцах, что такое лисповские рестарты. И подходит ли template Haskell для метапрограммирования (в понимании создания бесконечно забористых DSL)?
Не является ли это снобизмом — писать гуй на статически-типизированном языке? На сколько зрелы и полноценны биндинги Qt к этим языкам? (вопрос для тех, кто юзал)
PS: Просьба не агитировать за другие языки. Даже за OCaml