sintaxis reservadas programacion para palabras lenguaje inteligencia funcional espaƱol entornos desarrollo caracteristicas artificial haskell functional-programming

programacion - palabras reservadas haskell



ProgramaciĆ³n Haskell del mundo real (7)

Habiendo sido un desarrollador imperativo durante algunos años, nunca había tenido el impulso de aprender programación funcional.

Hace un par de meses, finalmente, decidí aprender Haskell. Es un lenguaje bastante bueno, pero estoy desconcertado acerca de cómo una aplicación real impulsada por eventos sería programada en ese idioma. ¿Conoces un buen tutorial al respecto?

Nota: cuando digo "aplicación real", no estoy hablando de una aplicación real preparada para producción. Solo me refiero a una pequeña aplicación de muestra, solo para entenderlo. Creo que algo así como una versión simplificada del caculator de Windows sería genial, y quizás algo un poco más complejo.



Cuando dices ejemplos del "mundo real" presumiblemente estás pensando en problemas que son intrínsecamente secuenciales o con estado o hacen muchas E / S, ¿no?

Entonces, ¿qué hay de los juegos?

O, ¿qué tal un xmonad , un editor de texto de clonación de Emacs extensible o un IDE ?

Luego, está el libro, que ya tiene su pregunta en el título: ¡ Real World Haskell y que también está disponible gratis !

Otra cosa que quizás desee considerar es la Programación Reactiva Funcional . (Se usa en Frag, por ejemplo.) Lo interesante de FRP es que le permite ver el problema de, por ejemplo, la programación de la GUI desde un ángulo muy diferente. Si lee el capítulo GUI en el libro RWH, verá que habla sobre cómo puede escribir una aplicación GUI como en C, solo que mejor. FRP OTOH le permite escribirlo de una manera totalmente diferente que ni siquiera sería posible en C.

Muchas veces (no estoy diciendo que este sea el caso en su pregunta, pero es un patrón recurrente) cuando alguien dice "pero se puede usar Haskell en el mundo real", lo que realmente están diciendo es "Lo sé". cómo hacer esto en C, y en Haskell no puedo hacerlo exactamente de la misma manera, por lo tanto debe ser imposible en Haskell, por lo tanto, Haskell no está listo para el mundo real ". Pero lo que se están perdiendo es que podría haber una forma totalmente diferente y mucho mejor de resolver el problema. (Es como decir "Erlang no tiene hilos, por lo tanto, no se puede usar para implementar sistemas concurrentes".) Y FRP es solo un ejemplo.


Para una charla relámpago hoy, he reunido esta lista de aplicaciones Haskell para vitrinas, excluyendo deliberadamente todo lo que solo se dirige a programadores:

  • darcs (desde 2002, 35 000 loc): sistema de control de versiones distribuidas con un enfoque innovador en cambios en lugar de estados.
  • xmonad (desde 2007, 30000 loc): administrador de ventanas de mosaico bien conocido con una gran biblioteca de diseño y otros complementos. Lo incluyó en la lista a pesar de que su archivo de configuración es un archivo Haskell.
  • hledger (desde 2007, 9000 loc): herramienta de contabilidad de doble contabilidad basada en archivos de texto, un clon de ledger .
  • Raincat (desde 2008, 2000 loc): juego de plataforma con un gato que no quiere mojarse.
  • arbtt (desde 2009, 2000 loc): Mi rastreador de tiempo automático basado en reglas. Lo incluyó en la lista como un enchufe desvergonzado; probablemente no tan popular. Ahora tiene una página web adecuada aportada por Waldir Pimenta.
  • detexify (desde 2010, 500 loc): el extremo posterior del muy útil buscador de comandos de caracteres LaTeX está escrito en Haskell.
  • git-annex (desde 2010, 28 000 loc): Administra tus archivos y su ubicación, una mezcla de Dropbox y Git. Escrito por el famoso Joey Hess, que se ganaba la vida con kickstarter Actualmente está ejecutando una segunda ronda de financiación !
  • Nikki and the Robots (desde 2010, 18 000 loc): juego de plataforma con Nikki y, bueno, sus robots. Se produjo como un juego independiente comercial y se vendió a través de un esquema de pago a cuenta, pero desafortunadamente la compañía cerró.
  • hoodle (desde 2011, 13 000 loc): un software de anotación de notas y PDF como xournal .
  • Chordify (desde 2012 Chordify ): analiza música, por ejemplo, desde un video de YouTube, y calcula los acordes de guitarra correspondientes. Software cerrado, pero supuestamente escrito en Haskell.

(También aparece en mi blog , y en las diapositivas de la charla , con bonitas imágenes representativas de cada programa).




deberías echarle un vistazo al Real World Haskell . El libro está disponible gratuitamente y muestra cómo Haskell se puede aplicar a problemas del mundo real. No lo llamaría un tutorial, aunque es mucho más completo.


xmonad es un evento impulsado (literalmente). Tiene un bucle de escucha que se activa en los eventos y modifica un estado interno que modela el servidor X, que luego se procesa en la pantalla.

xmonad