Оконные приложения для Лисп - Lisp
Формулировка задачи:
Всем доброго времени суток!
Увлекаюсь Лиспом, пишу на стареньком LisBox. Сам язык программирования просто божественный, но отсутствие как такового графического интерфейса вроде WindowForm сильно огорчает (варианты с LispWorks и AllegroCL отпали из-за дороговизны первого и убогости второго). Отчаянно пытался подключить GTK3, но так и не получилось, нормального описания для Tcl не нашёл, да и он то же криво работает. Может кто-нибудь помочь и пошагово описать, как надо установить GTK или Tcl, чтобы всё работало! Если для этого надо перейти на другую версию Лиспа, то не вопрос - давно смотрю в сторону SBCL. Да и хоть какой-нибудь адекватный мануал так же будет не лишним.
У самого у меня есть идея как связать WindowForm с Лисповым кодом, но не смог найти функции в Лиспе, которая по аналогии с С++ указывала бы на адрес ячейки памяти, в которой хранится значение переменной. Может кто знает?
За помощь буду безгранично признателен!
Решение задачи: «Оконные приложения для Лисп»
textual
Листинг программы
(defn show-timer () (defmacro toString (s) (java s "toString")) (defmacro calendar () (java (class "java.util.Calendar") "getInstance")) (def dateFormat (java (class "java.text.SimpleDateFormat") "new" (toString "HH:mm:ss"))) (defmacro get-time () (java dateFormat "format" (java (calendar) "getTime"))) (def label (java (class "javax.swing.JLabel") "new")) (java label "setText" (toString " hh:mm:ss ")) (def font (java (class "java.awt.Font") "new" (toString "Tahoma") 1 58)) (java label "setFont" font) (java label "setForeground" (java (class "java.awt.Color") "new" 255 0 0)) (defn update-time () (java label "setText" (get-time)) (java (class "java.lang.Thread") "sleep" 1000) (update-time)) (def window (java (class "javax.swing.JFrame") "new")) (java window "setLayout" (java (class "java.awt.FlowLayout") "new")) (java window "add" label) (java window "setVisible" true) (java window "pack") (update-time)) (show-timer)
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д