====== Interfaz gráfica para el intérprete ======
Si quieren probar la interfaz gráfica para el intérprete del proyecto pueden usar la que está en {{:compiladores:imp.tar|Imp}}.
Algunas apostillas para facilitarles la investigación:
* Usa [[http://haskell.org/gtk2hs/| Gtk2Hs]] el binding de Haskell para Gtk2.
* De acuerdo a como tengan definido sus tipos de datos (especialmente Omega), deberán hacer los cambios correspondientes.
* La interfaz de consola es una función run :: Omega Int -> IO ()
* La interfaz gráfica es una función runGtk :: Omega Int -> IO ()
* Por otro lado tengo una función execStrGen :: (Omega Int -> IO ()) -> (String -> IO ()) -> String -> IO ()
donde el primer argumento es la función para ejecutar el código (el tercer argumento) y el segundo argumento es una función que sabe que hacer en caso de error durante el parseo.
* Si ustedes tienen definida una función parecida a ''execStrGen'', entonces lo "único" que tienen que hacer es pasarle como argumento a esa función la función ''runGtk''.
* Si quieren tener el coloreado de sintáxis en el editor tienen que copiar el archivo ''imp.lang'' en ''$HOME/.gnome2/gtksourceview-1.0/language-specs/''.
* Para obtener un archivo LaTeX con los comentarios y el codigo "pretty-printed" uso [[http://www.iai.uni-bonn.de/~loeh/lhs2tex/|Lhs2TeX]].
El {{:compiladores:imp.tar|tar con los archivos}} contiene:
* Gui.lhs: el código para manejar la interfaz gráfica,
* Makefile: para compilar (tiene un pequeño error de dependencias, pero es fácil de solucionar)
* imp.lang: para tener coloreado de sintáxis
* Ui.glade: la definición de la interfaz gráfica con Glade2.
Así se ve:
{{:compiladores:gtk2hs3.png|Screenshot}}