Descargar

Introducción a Haskell (página 2)

Enviado por Pablo Turmero


Partes: 1, 2, 3
edu.red 11 Ejemplo gráfico

edu.red 12 Ejemplo de aplicación: Dazzle Es una aplicación para múltiples plataformas (Se usa tanto para Windows como para Linux) Se desarrolló mucho antes del plazo previsto que ocurre rara vez en proyectos software. En Windows XP, utiliza 12M de memoria para las grandes redes bayesianas de más de 50 nodos

edu.red 13 Más sobre WxHaskell Se publicó un artículo en una revista muy popular en Francia llamada L’informaticien sobre WxHaskell en Octubre del 2003 escrito por Frédéric Mazué WxHaskell se imparte en la Universidad Politécnica De Valencia en la asignatura Programación Declarativa También se imparte en la Universidad de Girona en la asignatura Paradigmas de programación

edu.red 14 En la Universidad Mayor de San Simón, Cochabamba, Bolivia se dio una conferencia sobre las interfaces gráficas de usuario en Haskell con especial atención a WxHaskell el 1 de Noviembre de 2007 El departamento de ciencias de la computación de la universidad de Utrecht, Holanda tiene varias aplicaciones de investigación que usan WxHaskell (El Dazzle es uno de ellos) Más sobre WxHaskell

edu.red 15 El departamento de Sistemas Informáticos y computación de la universidad politécnica de Valencia desarrolló una aplicación para la verificación de sitios Web utilizando lenguajes funcionales el 19 de Julio de 2005, y la interfaz gráfica de esa aplicación fue implementada en WxHaskell Más sobre WxHaskell

edu.red 16 Reseña técnica a Haskell

edu.red 17 Atributos y Propiedades

El tipo de un atributo representa su contenedor y su valor text :: Attr (Button a) String get ::w->Attr w a->IO a A la combinación de atributo y valor se le llama propiedad ( :=) :: Attr w a->a->Prop w set ::w->[Prop w]->IO ()

edu.red 18 Atributos y Propiedades exclamation :: Button a->IO () exclamation b = do s <- get b text set b [text := s++"!"]

( :~) :: Attr w a->(a->a)->Prop w

exclamation b = set b [text :~ (++"!")]

edu.red 19 Atributos y Propiedades Como la clase Window de wxWidgets posee un atributo de texto, todo tipo de ventanas pueden tenerlo text :: Attr (Window a) String De esta manera no hay que definir atributos de forma separada get ::w->Attr w a->IO a get w (Attr getter setter) = getter w data Prop w = a: (Attr w a) := a | a: (Attr w a) :» (a->a)

edu.red 20 Seguridad

wxHaskell impone una fuerte disciplina de tipos en wxWidgets

El tratamiento de memoria se realiza de forma automática

Comprueba punteros no inicializados, lanzando una excepción en Haskell

Existe una estructura jerárquica entre los Widgets creados

edu.red 21 Layout

Se aloja en el frame

caption :: String->Layout space :: Int->Int->Layout rule :: Int->Int->Layout boxed :: String->Layout->Layout grid :: Int->Int->[[Layout]]->Layout

edu.red 22 Primer Programa main :: IO () main = start hello

hello :: IO () hello = do f    <- frame    [text := "Hello!"] quit <- button f [text := "Quit", on command := close f] set f [layout := widget quit]

edu.red 23 Librerías Graphics.UI.WX y Graphics.UI.WXCore

WXCore está a bajo nivel Es el núcleo de la interfaz de los wxWidgets Solamente usa abstracción funcional

Sin embargo WX introduce nuevas funcionalidades Está implementada encima de WXCore Mecanismos de abstracción como la sobrecarga

edu.red 24 Conceptos El frame es la ventana de nivel superior Todas las demás poseen siempre un padre Los panels se incluyen en el frame Los elementos tienen atributos Los nombres de los atributos están sobrecargados La apariencia en la pantalla la establece layout Los controles también tienen atributos

edu.red 25 Conceptos Son instrucciones a seguir cuando se activan (on) Hay Widgets invisibles (timer, value …) Se basa en un entorno de desarrollo orientado a objetos Los Widgets son punteros a objetos en C++ Atributo + Valor = Propiedad Gracias a la herencia hay atributos compartidos Colisión con el sistema de tipos de Haskell El contenedor sirve para Widgets anidados

edu.red 26 Conceptos

Alinear, Expandir y Estirar halignLeft :: Layout->Layout — default halignRight :: Layout->Layout halignCenter :: Layout->Layout valignTop :: Layout->Layout — default valignBottom :: Layout->Layout valignCenter :: Layout->Layout

edu.red 27 Conceptos rigid :: Layout->Layout — default shaped :: Layout->Layout expand :: Layout->Layout

static :: Layout->Layout — default hstretch :: Layout->Layout vstretch :: Layout->Layout

edu.red 28 Conceptos

Para dividir el espacio entre filas y columnas

hweight :: Int->Layout->Layout vweight :: Int->Layout->Layout Depende del peso de cada elemento

edu.red 29 Una primera aplicación en Haskell

edu.red 30 Introducción wxHaskell no es una interfaz diseñada para crear juegos, aún así, hemos elegido poner como ejemplo el conocido juego ASTEROIDS en una versión bastante minimal.

La intención de programar este juego es la de mostrar aspectos interesantes de wxHaskell, que con otras aplicaciones hubiera sido más "costoso" de ver.

Para quien no conozca el juego Asteroids, éste trata de una nave que debe de esquivar infinitas cantidades de asteroides, y en cuanto choca con un asteroide, éste explosiona llevándonos al final del juego.

Partes: 1, 2, 3
 Página anterior Volver al principio del trabajoPágina siguiente