Оконные приложения для Лисп - Lisp

Узнай цену своей работы

Формулировка задачи:

Всем доброго времени суток! Увлекаюсь Лиспом, пишу на стареньком LisBox. Сам язык программирования просто божественный, но отсутствие как такового графического интерфейса вроде WindowForm сильно огорчает (варианты с LispWorks и AllegroCL отпали из-за дороговизны первого и убогости второго). Отчаянно пытался подключить GTK3, но так и не получилось, нормального описания для Tcl не нашёл, да и он то же криво работает. Может кто-нибудь помочь и пошагово описать, как надо установить GTK или Tcl, чтобы всё работало! Если для этого надо перейти на другую версию Лиспа, то не вопрос - давно смотрю в сторону SBCL. Да и хоть какой-нибудь адекватный мануал так же будет не лишним. У самого у меня есть идея как связать WindowForm с Лисповым кодом, но не смог найти функции в Лиспе, которая по аналогии с С++ указывала бы на адрес ячейки памяти, в которой хранится значение переменной. Может кто знает? За помощь буду безгранично признателен!

Решение задачи: «Оконные приложения для Лисп»

textual
Листинг программы
  1. (defn show-timer ()
  2.  
  3.     (defmacro toString (s) (java s "toString"))
  4.  
  5.     (defmacro calendar () (java (class "java.util.Calendar") "getInstance"))
  6.  
  7.     (def dateFormat (java (class "java.text.SimpleDateFormat") "new"
  8.         (toString "HH:mm:ss")))
  9.  
  10.     (defmacro get-time () (java dateFormat "format" (java (calendar) "getTime")))
  11.  
  12.     (def label (java (class "javax.swing.JLabel") "new"))
  13.     (java label "setText" (toString " hh:mm:ss "))
  14.     (def font (java (class "java.awt.Font") "new" (toString "Tahoma") 1 58))
  15.     (java label "setFont" font)
  16.     (java label "setForeground" (java (class "java.awt.Color") "new" 255 0 0))
  17.  
  18.     (defn update-time ()
  19.         (java label "setText" (get-time))
  20.         (java (class "java.lang.Thread") "sleep" 1000)
  21.         (update-time))
  22.  
  23.     (def window (java (class "javax.swing.JFrame") "new"))
  24.     (java window "setLayout" (java (class "java.awt.FlowLayout") "new"))
  25.     (java window "add" label)
  26.     (java window "setVisible" true)
  27.     (java window "pack")
  28.  
  29.     (update-time))
  30.  
  31. (show-timer)

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


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

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

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

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут