| swizard ( @ 2008-03-23 23:42:00 |
| Current location: | Home |
| Entry tags: | c, code, dates, gtk, libecal, lisp, scheme |
Продираясь сквозь слои абстракций...
Ковыряю простенький календарь dates на предмет некоторого апгрейда.
В процессе расковыривания выясняются следующие вещи:
- Оно написано на C. Хорошо, это я умею.
- Оно на gtk (до этого с этим тулкитом не работал вообще). Ладно, в общем, разобрался.
- Оно хочет целый evolution-data-server для его библиотечки libecal. Ладно, поставил, бегло ознакомился с API.
- Оно общается с libecal-бэкендом посредством т.н. запросов. Типа базы данных, получается.
- Эти запросы представляют собой... LISP =) Пруфлинк.
Точнее, s-expressions в стиле scheme. Вот пример:
(occur-in-time-range? (make-time "20080317T000000Z") (make-time "20080324T000000Z"))
Итого имеем: программу на си, пользующуюся фреймворком GTK, на котором написана библиотека libecal, которая представляет собой морду для интерпретатора упрощенного лиспа.
"Любая достаточно сложная программа на [фортране, C..] содержит половину кривой недоделанной реализации Common Lisp © Гринспун (вроде)