Оконные приложения для Лисп - 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)

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

6   голосов , оценка 3.833 из 5