Common LispのQtバインディングであるCommonQtを触ってみました。 QtならマルチプラットフォームなのでどこでもGUIが使えます(たぶん)
Qtのチュートリアルにある以下のようなC++のコードは
// C++
#include <QApplication>
#include <QPushButton>
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
QPushButton hello("Hello world!");
hello.resize(100, 30);
hello.show();
return app.exec();
}
このように書けるようです。
;; Common Lisp (CommonQt)
(asdf:load-system "qt")
(defpackage :qt-user
(:use :qt :cl)
(:export main))
(in-package :qt-user)
(named-readtables:in-readtable :qt)
(defun main ()
(let ((app (qt:make-qapplication)))
;; QPushButton は 大文字小文字を区別する
(let ((hello (#_new QPushButton "Hello world!")))
(#_resize hello 100 30)
(#_show hello)
(#_exec app))))
(main)
ほとんどC++のコードをそのまま直しても動かせそうで良い感じです。