More than Just Lines on a Map: Best Practices for U.S Bike Routes
λPage Thesis Slides
1. Introducci´n
o
Conociendo λPage
λPage por Dentro
Pr´ximos Pasos
o
λPage
Fernando Benavides
Departamento de Computaci´n, FCEyN,Universidad de Buenos Aires.
o
19 de julio de 2010
Fernando Benavides λPage
2. Introducci´n
o
Conociendo λPage Presentaci´n
o
λPage por Dentro Motivaci´n
o
Pr´ximos Pasos
o
El Orador
Fernando Benavides
El camino recorrido
Alumno de Computaci´n desde 2001
o
Programador desde hace m´s de 10 a˜os
a n
Programador Funcional desde hace 2 a˜os
n
La idea
Desarrollar una herramienta para los programadores
funcionales como las que existen en el paradigma de
orientaci´n a objetos
o
Fernando Benavides λPage
3. Introducci´n
o
Conociendo λPage Presentaci´n
o
λPage por Dentro Motivaci´n
o
Pr´ximos Pasos
o
El Orador
Fernando Benavides
El camino recorrido
Alumno de Computaci´n desde 2001
o
Programador desde hace m´s de 10 a˜os
a n
Programador Funcional desde hace 2 a˜os
n
La idea
Desarrollar una herramienta para los programadores
funcionales como las que existen en el paradigma de
orientaci´n a objetos
o
Fernando Benavides λPage
4. Introducci´n
o
Conociendo λPage Presentaci´n
o
λPage por Dentro Motivaci´n
o
Pr´ximos Pasos
o
El Orador
Fernando Benavides
El camino recorrido
Alumno de Computaci´n desde 2001
o
Programador desde hace m´s de 10 a˜os
a n
Programador Funcional desde hace 2 a˜os
n
La idea
Desarrollar una herramienta para los programadores
funcionales como las que existen en el paradigma de
orientaci´n a objetos
o
Fernando Benavides λPage
5. Introducci´n
o
Conociendo λPage Presentaci´n
o
λPage por Dentro Motivaci´n
o
Pr´ximos Pasos
o
Trabajando en Haskell
¿C´mo trabaja un desarrollador
o
Haskell?
Crea o modifica m´dulos con
o
su editor de texto favorito
Los compila utilizando GHC
Genera paquetes con Cabal
Para realizar pruebas,
recurre a GHCi
Fernando Benavides λPage
6. Introducci´n
o
Conociendo λPage Presentaci´n
o
λPage por Dentro Motivaci´n
o
Pr´ximos Pasos
o
Trabajando en Haskell
¿C´mo trabaja un desarrollador
o
Haskell?
Crea o modifica m´dulos con
o
su editor de texto favorito
Los compila utilizando GHC
Genera paquetes con Cabal
Para realizar pruebas,
recurre a GHCi
Fernando Benavides λPage
7. Introducci´n
o
Conociendo λPage Presentaci´n
o
λPage por Dentro Motivaci´n
o
Pr´ximos Pasos
o
Trabajando en Haskell
¿C´mo trabaja un desarrollador
o
Haskell?
Crea o modifica m´dulos con
o
su editor de texto favorito
Los compila utilizando GHC
Genera paquetes con Cabal
Para realizar pruebas,
recurre a GHCi
Fernando Benavides λPage
8. Introducci´n
o
Conociendo λPage Presentaci´n
o
λPage por Dentro Motivaci´n
o
Pr´ximos Pasos
o
Trabajando en Haskell
¿C´mo trabaja un desarrollador
o
Haskell?
Crea o modifica m´dulos con
o
su editor de texto favorito
Los compila utilizando GHC
Genera paquetes con Cabal
Para realizar pruebas,
recurre a GHCi
Fernando Benavides λPage
9. Introducci´n
o
Conociendo λPage Presentaci´n
o
λPage por Dentro Motivaci´n
o
Pr´ximos Pasos
o
Trabajando en Haskell
¿C´mo trabaja un desarrollador
o
Haskell?
Crea o modifica m´dulos con
o
su editor de texto favorito
Los compila utilizando GHC
Genera paquetes con Cabal
Para realizar pruebas,
recurre a GHCi
Fernando Benavides λPage
10. Introducci´n
o
Conociendo λPage Presentaci´n
o
λPage por Dentro Motivaci´n
o
Pr´ximos Pasos
o
GHCi
GHCi permite:
introducir c´digo para
o
ejecutarlo y observar los
resultados obtenidos
definir expresiones y
utilizarlas
cargar m´dulos para utilizar
o
sus funciones, tipos de
datos, etc.
Fernando Benavides λPage
11. Introducci´n
o
Conociendo λPage Presentaci´n
o
λPage por Dentro Motivaci´n
o
Pr´ximos Pasos
o
Trabajando con Lenguajes Orientados a Objetos
En cambio quienes programan en
Java, .NET o Smalltalk cuentan
con una IDE que provee
Autocompleci´n de c´digo
o o
Compilaci´n autom´tica
o a
Debugger integrado
Herramientas para
“micro-testing”
Fernando Benavides λPage
12. Introducci´n
o
Conociendo λPage Presentaci´n
o
λPage por Dentro Motivaci´n
o
Pr´ximos Pasos
o
Trabajando con Lenguajes Orientados a Objetos
En cambio quienes programan en
Java, .NET o Smalltalk cuentan
con una IDE que provee
Autocompleci´n de c´digo
o o
Compilaci´n autom´tica
o a
Debugger integrado
Herramientas para
“micro-testing”
Fernando Benavides λPage
13. Introducci´n
o
Conociendo λPage Presentaci´n
o
λPage por Dentro Motivaci´n
o
Pr´ximos Pasos
o
Trabajando con Lenguajes Orientados a Objetos
En cambio quienes programan en
Java, .NET o Smalltalk cuentan
con una IDE que provee
Autocompleci´n de c´digo
o o
Compilaci´n autom´tica
o a
Debugger integrado
Herramientas para
“micro-testing”
Fernando Benavides λPage
14. Introducci´n
o
Conociendo λPage Presentaci´n
o
λPage por Dentro Motivaci´n
o
Pr´ximos Pasos
o
Trabajando con Lenguajes Orientados a Objetos
En cambio quienes programan en
Java, .NET o Smalltalk cuentan
con una IDE que provee
Autocompleci´n de c´digo
o o
Compilaci´n autom´tica
o a
Debugger integrado
Herramientas para
“micro-testing”
Fernando Benavides λPage
15. Introducci´n
o
Conociendo λPage Presentaci´n
o
λPage por Dentro Motivaci´n
o
Pr´ximos Pasos
o
Trabajando con Lenguajes Orientados a Objetos
En cambio quienes programan en
Java, .NET o Smalltalk cuentan
con una IDE que provee
Autocompleci´n de c´digo
o o
Compilaci´n autom´tica
o a
Debugger integrado
Herramientas para
“micro-testing”
Fernando Benavides λPage
16. Introducci´n
o
Conociendo λPage Presentaci´n
o
λPage por Dentro Motivaci´n
o
Pr´ximos Pasos
o
“Micro-testing”
El Workspace de Smalltalk
permite:
introducir c´digo para
o
ejecutarlo, inspeccionarlo y
analizar los resultados
obtenidos
administrar varias paginas
de texto
crear objetos y utilizarlos
Fernando Benavides λPage
17. Introducci´n
o
Conociendo λPage Como el Workspace de Smalltalk . . .
λPage por Dentro . . . pero para Haskell
Pr´ximos Pasos
o
Conociendo λPage
Fernando Benavides λPage
18. Introducci´n
o
Conociendo λPage Como el Workspace de Smalltalk . . .
λPage por Dentro . . . pero para Haskell
Pr´ximos Pasos
o
Como el Workspace de Smalltalk . . .
λPage es similar al Workspace de Smalltalk pues permite al
usuario
Evaluar expresiones
Detectar excepciones
Administrar p´ginas de texto libre
a
Intercalar expresiones y definiciones
Fernando Benavides λPage
19. Introducci´n
o
Conociendo λPage Como el Workspace de Smalltalk . . .
λPage por Dentro . . . pero para Haskell
Pr´ximos Pasos
o
. . . pero para Haskell
Pero, a su vez, por estar hecho para Haskell, presenta otros
desaf´
ıos
Lazy evaluation
Expresiones puras vs. Expresiones con efectos
Administraci´n de m´dulos
o o
Fernando Benavides λPage
20. Introducci´n
o
Conociendo λPage Como el Workspace de Smalltalk . . .
λPage por Dentro . . . pero para Haskell
Pr´ximos Pasos
o
. . . pero para Haskell
Pero, a su vez, por estar hecho para Haskell, presenta otros
desaf´
ıos
Lazy evaluation
Expresiones puras vs. Expresiones con efectos
Administraci´n de m´dulos
o o
Fernando Benavides λPage
21. Introducci´n
o
Conociendo λPage Como el Workspace de Smalltalk . . .
λPage por Dentro . . . pero para Haskell
Pr´ximos Pasos
o
. . . pero para Haskell
Pero, a su vez, por estar hecho para Haskell, presenta otros
desaf´
ıos
Lazy evaluation
Expresiones puras vs. Expresiones con efectos
Administraci´n de m´dulos
o o
Fernando Benavides λPage
22. Introducci´n
o
Conociendo λPage Desarrollo
λPage por Dentro Arquitectura
Pr´ximos Pasos
o
λPage por Dentro
Fernando Benavides λPage
23. Introducci´n
o
Conociendo λPage Desarrollo
λPage por Dentro Arquitectura
Pr´ximos Pasos
o
Desarrollo de λPage
λPage est´ desarrollado en Haskell
a
En gran parte est´ desarrollado utilizando λPage
a
Se conecta con GHC a trav´s de su API
e
Su interfaz gr´fica fue creada usando wxHaskell
a
Su alto grado de paralelismo se logra utilizando eprocess
Fernando Benavides λPage
24. Introducci´n
o
Conociendo λPage Desarrollo
λPage por Dentro Arquitectura
Pr´ximos Pasos
o
Desarrollo de λPage
λPage est´ desarrollado en Haskell
a
En gran parte est´ desarrollado utilizando λPage
a
Se conecta con GHC a trav´s de su API
e
Su interfaz gr´fica fue creada usando wxHaskell
a
Su alto grado de paralelismo se logra utilizando eprocess
Fernando Benavides λPage
25. Introducci´n
o
Conociendo λPage Desarrollo
λPage por Dentro Arquitectura
Pr´ximos Pasos
o
Desarrollo de λPage
λPage est´ desarrollado en Haskell
a
En gran parte est´ desarrollado utilizando λPage
a
Se conecta con GHC a trav´s de su API
e
Su interfaz gr´fica fue creada usando wxHaskell
a
Su alto grado de paralelismo se logra utilizando eprocess
Fernando Benavides λPage
26. Introducci´n
o
Conociendo λPage Desarrollo
λPage por Dentro Arquitectura
Pr´ximos Pasos
o
Desarrollo de λPage
λPage est´ desarrollado en Haskell
a
En gran parte est´ desarrollado utilizando λPage
a
Se conecta con GHC a trav´s de su API
e
Su interfaz gr´fica fue creada usando wxHaskell
a
Su alto grado de paralelismo se logra utilizando eprocess
Fernando Benavides λPage
27. Introducci´n
o
Conociendo λPage Desarrollo
λPage por Dentro Arquitectura
Pr´ximos Pasos
o
Desarrollo de λPage
λPage est´ desarrollado en Haskell
a
En gran parte est´ desarrollado utilizando λPage
a
Se conecta con GHC a trav´s de su API
e
Su interfaz gr´fica fue creada usando wxHaskell
a
Su alto grado de paralelismo se logra utilizando eprocess
Fernando Benavides λPage
28. Introducci´n
o
Conociendo λPage Desarrollo
λPage por Dentro Arquitectura
Pr´ximos Pasos
o
Arquitectura
Principales Requerimientos:
Conexi´n con GHC
o
Paralelismo
Errores Controlados
Presentaci´n de Resultados
o
Fernando Benavides λPage
29. Introducci´n
o
Conociendo λPage Desarrollo
λPage por Dentro Arquitectura
Pr´ximos Pasos
o
Ejemplo de Interacci´n
o
Veremos c´mo interact´an estos componentes para evaluar la
o u
siguiente expresi´n:
o
r e a d F i l e ” hpage . c a b a l ” >>=
r e t u r n . l e n g t h . head . l i n e s
Fernando Benavides λPage
30. Introducci´n
o
Conociendo λPage Desarrollo
λPage por Dentro Arquitectura
Pr´ximos Pasos
o
Ejemplo de Interacci´n
o
Procesos Involucrados:
UI Manager operando
Fernando Benavides λPage
31. Introducci´n
o
Conociendo λPage Desarrollo
λPage por Dentro Arquitectura
Pr´ximos Pasos
o
Ejemplo de Interacci´n
o
Procesos Involucrados:
UI Manager esperando
HPage Server operando
Fernando Benavides λPage
32. Introducci´n
o
Conociendo λPage Desarrollo
λPage por Dentro Arquitectura
Pr´ximos Pasos
o
Ejemplo de Interacci´n
o
Procesos Involucrados:
UI Manager esperando
HPage Server esperando
GHC Server operando
Fernando Benavides λPage
33. Introducci´n
o
Conociendo λPage Desarrollo
λPage por Dentro Arquitectura
Pr´ximos Pasos
o
Ejemplo de Interacci´n
o
Procesos Involucrados:
UI Manager operando
IO Server operando
Value Filler esperando
Fernando Benavides λPage
34. Introducci´n
o
Conociendo λPage Desarrollo
λPage por Dentro Arquitectura
Pr´ximos Pasos
o
Ejemplo de Interacci´n
o
Procesos Involucrados:
UI Manager operando
Value Filler esperando
Element Filler operando
Runaway Killer operando
Fernando Benavides λPage
35. Introducci´n
o
Conociendo λPage Desarrollo
λPage por Dentro Arquitectura
Pr´ximos Pasos
o
Ejemplo de Interacci´n
o
Procesos Involucrados:
UI Manager operando
Fernando Benavides λPage
36. Introducci´n
o
Conociendo λPage Limitaciones
λPage por Dentro Trabajo a Futuro
Pr´ximos Pasos
o
Pr´ximos Pasos
o
Fernando Benavides λPage
37. Introducci´n
o
Conociendo λPage Limitaciones
λPage por Dentro Trabajo a Futuro
Pr´ximos Pasos
o
Limitaciones
M´s tipos especiales
a
Tuplas
Either
Maybe
Composici´n
o
Listas de listas
Acciones que generen listas
Listas de acciones
Nuevas visualizaciones
M´s que un cuadro de texto
a
¿Qu´ se puede hacer?
e
Clase Presentable
Fernando Benavides λPage
38. Introducci´n
o
Conociendo λPage Limitaciones
λPage por Dentro Trabajo a Futuro
Pr´ximos Pasos
o
Limitaciones
M´s tipos especiales
a
Tuplas
Either
Maybe
Composici´n
o
Listas de listas
Acciones que generen listas
Listas de acciones
Nuevas visualizaciones
M´s que un cuadro de texto
a
¿Qu´ se puede hacer?
e
Clase Presentable
Fernando Benavides λPage
39. Introducci´n
o
Conociendo λPage Limitaciones
λPage por Dentro Trabajo a Futuro
Pr´ximos Pasos
o
Limitaciones
M´s tipos especiales
a
Tuplas
Either
Maybe
Composici´n
o
Listas de listas
Acciones que generen listas
Listas de acciones
Nuevas visualizaciones
M´s que un cuadro de texto
a
¿Qu´ se puede hacer?
e
Clase Presentable
Fernando Benavides λPage
40. Introducci´n
o
Conociendo λPage Limitaciones
λPage por Dentro Trabajo a Futuro
Pr´ximos Pasos
o
Limitaciones
M´s tipos especiales
a
Tuplas
Either
Maybe
Composici´n
o
Listas de listas
Acciones que generen listas
Listas de acciones
Nuevas visualizaciones
M´s que un cuadro de texto
a
¿Qu´ se puede hacer?
e
Clase Presentable
Fernando Benavides λPage
41. Introducci´n
o
Conociendo λPage Limitaciones
λPage por Dentro Trabajo a Futuro
Pr´ximos Pasos
o
Otras Herramientas
Con λPage hemos acercado al desarrollador Haskell s´lo una de
o
muchas herramientas:
Mejores herramientas para TDD
Refactoring
An´lisis de Terminaci´n
a o
...
Fernando Benavides λPage
42. Introducci´n
o
Conociendo λPage Limitaciones
λPage por Dentro Trabajo a Futuro
Pr´ximos Pasos
o
Otras Herramientas
Con λPage hemos acercado al
desarrollador Haskell s´lo una de
o
muchas herramientas:
Mejores herramientas para
TDD
Refactoring
An´lisis de Terminaci´n
a o
...
Fernando Benavides λPage
43. Introducci´n
o
Conociendo λPage Limitaciones
λPage por Dentro Trabajo a Futuro
Pr´ximos Pasos
o
Agradecimientos / Preguntas
Sitio Web de λPage:
http://hpage.haskell.com
λPage en Github
http://github.com/elbrujohalcon/hPage
Fernando Benavides en la Internet
http://profiles.google.com/greenmellon
Fernando Benavides λPage