¿Cómo obtengo una GUI de Common-Lisp en Windows?
graphics slime (8)
Estoy usando Emacs, con CLISP y Slime, y quiero poder dibujar en la pantalla. Estoy pensando específicamente en dibujar gráficos, pero cualquier cosa que me permita dibujar formas básicas y manipularlas podría ayudarme a comenzar.
Creo que encontré mi propia respuesta. Clojure parece tener todo lo que estaba buscando, simplemente porque ahora puedo usar todos los elementos de la GUI de Java de forma nativa en LISP. Es un dialecto diferente de LISP que el Common-Lisp que estaba usando, pero parece tener mucho apoyo de la comunidad, y se integra con mi instalación de Windows de Emacs ya sea a través de SLIME o mediante el intérprete Inferior-Lisp. Hasta ahora he estado muy impresionado.
Oh, una muestra de código:
(. javax.swing.JOptionPane (showMessageDialog nil "Hello World"))
¿Adivina qué hace esto? :)
El blog de Bill Clementson tiene bastante en Clojure, incluyendo muchos mensajes útiles sobre cómo instalarlo. Vea aquí: sus publicaciones en Clojure
Clojure es un excelente Lisp, y Swing es un sólido (si no particularmente emocionante visualmente) toolkit para ventanas. Si quieres hacer gráficos más avanzados y / o jugar con la programación de juegos, deberías probar Slick , que es una biblioteca de juegos / gráficos de propósito general que se encuentra sobre Swing y te da acceso a OpenGL y muchas otras cosas.
La combinación Clojure / Slick me pareció una excelente manera de hacer una programación gráfica exploratoria, ya que puedes interactuar con la ventana gráfica directamente desde REPL.
Para hacer las suyas propias (como dijiste, formas básicas), prueba Lispbuilder-SDL o una de las FFI de cl-cairo (aunque supongo que este último funciona con MS Windows).
Hay cl-cairo2 - un enlace a la biblioteca de dibujo vectorial de El Cairo. Se puede usar para dibujar varias imágenes en varias superficies. Hay una biblioteca cl-2d que usa cl-cairo2 para dibujar gráficos.
Y está cl-gtk2 , un enlace a la biblioteca Gtk +. Puede crear widgets que se dibujan con cl-cairo2 (o cl-2d) que dibujan lo que desea.
Sé que esta es una publicación anterior, pero la información está aquí para que otras personas como yo encuentren este hilo buscando lo mismo.
Esta biblioteca para enlaces tk en lisp común parece funcionar bastante bien. http://www.peter-herth.de/ltk/
Los usuarios de CLISP pueden encontrar lo siguiente útil para sus aplicaciones gráficas:
cl-vectores es una biblioteca de Lisp común pura para crear, transformar y representar rutas vectoriales antialias. Se puede instalar usando ASDF-Install. http://projects.tuxee.net/cl-vectors/
Vecto es una interfaz simplificada para la poderosa biblioteca de rasterización vectorial CL-VECTORS .... los resultados se pueden guardar en PNG ... Dado que Vecto y todas las bibliotecas de soporte se escriben completamente en Common Lisp, sin depender de bibliotecas externas que no sean Lisp. , debería funcionar en cualquier entorno Common Lisp. Vecto está disponible bajo una licencia tipo BSD. La versión actual es 1.4.3, lanzada el 26 de agosto de 2009. http://www.xach.com/lisp/vecto/
Doug tiene razón; CAPI funcionará bien. Otras cosas que puedes probar:
cltk: http://www.cliki.net/Lisp-Tk
Sé que Allegro también tiene algo para la programación de Windows, pero nunca lo he intentado.
Lo que también puede funcionar es cells-gtk: http://common-lisp.net/project/cells-gtk/
De nuevo, solo puedo decirte que existe, pero no lo malo que es o si realmente funciona ...
No puedo comentar también sobre la calidad de http://www.cliki.net/GTK%20binding
Pero eso es principalmente lo que está disponible.
Corman Lisp probablemente también tiene algo que ofrecer para la programación de Windows.
De todos modos, las opciones en Windows son relativamente escasas. Probablemente puedas tener más confianza en CAPI, que se usa para el IDE de LispWorks en Windows, Linux, MacOS X y en algunos pocos grandes equipos también ...
Saludos
Puede cambiar de CLISP a la versión gratuita de LispWorks Personal Edition y utilizar la API de dibujo Puertos de gráficos CAPI .
O puede usar la Interfaz de Función Extranjera de Lisp y usar uno de los kits de herramientas gráficas disponibles para su sistema operativo.