Aprende haskell por el bien de todos
Aprende haskell por el bien de todos
Contenidos
ejemplo de haskell
Ahora, en el aprendizaje de varios lenguajes imperativos/OO (como C, Java, PHP), los ejercicios han sido un buen camino para mí. Pero como no sé realmente de qué es capaz Haskell y porque hay muchos conceptos nuevos que utilizar, no he sabido por dónde empezar.
Voy a ordenar esta guía por el nivel de habilidad que tenga en Haskell, yendo desde un principiante absoluto hasta un experto. Ten en cuenta que este proceso te llevará muchos meses (¿años?), así que es bastante largo.
En primer lugar, Haskell es capaz de todo, con la suficiente habilidad. Es muy rápido (sólo por detrás de C y C++ en mi experiencia), y puede usarse para cualquier cosa, desde simulaciones hasta servidores, guis y aplicaciones web.
Sin embargo, hay algunos problemas que son más fáciles de escribir para un principiante en Haskell que otros. Los problemas matemáticos y los programas de procesos de listas son buenos candidatos para esto, ya que sólo requieren los conocimientos más básicos de Haskell para poder escribirlos.
Algunas buenas guías para aprender lo más básico de Haskell son el tutorial Happy Learn Haskell y los primeros 6 capítulos de Learn You a Haskell for Great Good (o su adaptación a JupyterLab). Mientras los lees, es una muy buena idea que también resuelvas problemas sencillos con lo que sabes.
aprenda usted un haskell pdf
Como primer lenguaje de programación, decidí aprender Haskell. Soy estudiante de filosofía analítica, y Haskell me permitió crear rápida y correctamente programas de interés, por ejemplo, transductores para el análisis sintáctico del lenguaje natural, demostradores de teoremas e intérpretes. Aunque sólo llevo dos meses y medio programando, la semántica y la sintaxis de Haskell me resultaron mucho más fáciles de aprender que los lenguajes imperativos más tradicionales, y me siento cómodo (ahora) con la mayoría de sus construcciones.
Sin embargo, programar en Haskell es como una brujería, y me gustaría ampliar mis conocimientos de programación. Me gustaría elegir un nuevo lenguaje de programación para aprender, pero no tengo suficiente tiempo para coger un lenguaje arbitrario, dejarlo y repetir. Así que pensé en plantear la pregunta aquí, junto con varias estipulaciones sobre el tipo de lenguaje que estoy buscando. Algunas son subjetivas, otras pretenden facilitar la transición desde Haskell.
1) Varias respuestas indicaron que un lenguaje fuerte, tipado estáticamente y que enfatice la recursión significa otro lenguaje funcional. Aunque quiero seguir trabajando fuertemente con Haskell, camccann y larsmans señalaron correctamente que otro lenguaje de este tipo “facilitaría demasiado la transición”. Estos comentarios han sido muy útiles, ¡porque no pretendo escribir Haskell en Caml! De los asistentes de pruebas, Coq y Agda parecen interesantes. En particular, Coq proporcionaría una sólida introducción a la lógica constructiva y a la teoría formal de tipos. He pasado un poco de tiempo con la lógica modal y de predicados de primer orden (Mendellsohn, Enderton, algo de Hinman), así que probablemente me divertiría mucho con Coq.
programación con haskell desde los primeros principios
He leído algunas preguntas como Scala vs Haskell que discuten los méritos de ambos lenguajes o cuál aprender, pero ya sé que me gustaría aprender Scala. Fui programador de Java en la universidad y ahora uso principalmente PHP.
Me pregunto si sería una buena idea aprender Haskell como introducción a la programación funcional, ya que es puramente funcional, por lo que lo aprendería adecuadamente en lugar de utilizar al azar trozos de funcional en Scala sin saber por qué.
También me gustaría usar Haskell para proyectos personales, etc., ya que tiene una pinta estupenda, pero no veo muchas aplicaciones en el mundo real, parece que se usa más para cosas académicas, de ahí que quiera aprenderlo para obtener la comprensión funcional y luego pasar a Scala.
Haskell es conceptualmente un lenguaje mucho más simple que Scala, y si tu objetivo es aprender a programar funcionalmente, no puedes dejar de hacerlo si empiezas con Haskell. Por su diseño, Scala admite una especie de “modo heredado” de codificación en el que no tienes que cambiar demasiado tus hábitos de Java (o PHP) si no quieres. Creo que se trata de una decisión estratégica -y buena- destinada a aumentar la adopción entre los incondicionales de Java.
haskell utiliza
En primer lugar, en general recomiendo la lectura del libro Haskell Programming from first principles, principalmente porque el libro enseña Haskell sin dejar de lado los detalles y también proporciona un montón de ejercicios para poner a prueba su comprensión. Esto suele ser suficiente si estás aprendiendo Haskell como tu primer lenguaje.
Algunas personas aprenden Haskell con la expectativa de alcanzar algún tipo de iluminación o nirvana de la programación. Te decepcionarás si traes estas expectativas irreales al lenguaje. Haskell no es un logro a desbloquear o un trofeo a ganar porque el aprendizaje es un proceso interminable y no una línea de meta.
Creo que una expectativa realista es tratar a Haskell como un lenguaje agradable de usar que te permite centrarte en la resolución de problemas reales (en lugar de perder el tiempo arreglando problemas tontos autoinducidos como los punteros nulos y “undefined is not a function”).
Los principiantes de Haskell comúnmente cometen el error de tratar de aprender tanto del lenguaje como sea posible antes de escribir su primer programa y sobreingeniería en el primer borrador. Esto le quemará rápidamente.