tutorial online learn descargar constructora compiler company book haskell functional-programming

online - ¿Cuánto tiempo ha invertido para tener un buen conocimiento de Haskell?



haskell tutorial (7)

Bueno, después de 2 años todavía no entiendo completamente todo sobre Haskell. Puedo escribir programas "avanzados" (después de aproximadamente 2-3 meses de comenzar a aprender Haskell), pero la gente sigue creando nuevas cosas para aprender, lo cual es parte de la diversión de Haskell :)

En cuanto a la mejor manera de aprender, siempre me gusta aprender haciendo. Busque en el código de algo que le interese en Hackage (algo que no sea demasiado grande) y luego intente implementar algo como usted (o un subconjunto). Elija un proyecto al que pueda seguir agregando más capas difíciles a lo largo del tiempo.

Sé que esta pregunta puede sonar tonta, pero estoy aprendiendo (al menos intentando) a Haskell durante aproximadamente 4 días. Ya he terminado de leer http://learnyouahaskell.com/ , y ahora estoy invirtiendo tiempo en: el camino de Haskell hacia la lógica, las matemáticas y la programación , y las cosas se complicaron mucho para mí. No tengo experiencia en programación funcional, solo algunos conocimientos básicos sobre Lisp.

Aunque entiendo los conceptos, cuando tengo que escribir un código no tan básico, hay una oscuridad total y no puedo construir un plan en mi cabeza. Parece que hay muchas maneras de realizar una determinada tarea, pero no puedo expresarme.

Después de 4 días de python, pude haber escrito guiones complejos (no "pythonic", pero funcionaron). Después de 4 días en haskell, estoy ... casi en blanco.

¿Alguna sugerencia sobre cómo mejorar mis habilidades funcionales? ¿Cuánto tiempo te llevó entender a Haskell por completo?


Creo que la curva de aprendizaje de Haskell es muy extraña. Al principio, no comprende casi nada; más extrañamente, en la mayoría de los puntos donde desea aplicar su conocimiento imperativo (almacenamiento en búfer, etc.) se le dice que simplemente debe olvidarse de todo.

Después de esta fase, generalmente aparece el capítulo de su libro donde se le enseñan los sabores especiales de Haskell. Al menos en este punto, se supone que tu cerebro estalla y casi cualquiera piensa:

¿Qué tan loco puede ser alguien para desarrollar algo como mónadas?

Pero tan pronto, como también comprendió esto, nada le impide comprender el resto, y piensa pronto, cuán difícil y verbosa era la programación imperativa.

Por cierto, me tomó 2 meses entender los conceptos básicos, empecé en febrero de 2010. Pero nuevamente me tomó 4 meses entender algunos pensamientos más difíciles como los parámetros de función y los efectos resultantes (especialmente la mónada State fue un milagro hasta que encontré una buena descripción) en SO como funciona IO - de la misma manera;), pero veo un pensamiento bastante nuevo en todas partes.


Después de aproximadamente 2 años, hay algunas partes de Haskell que conozco muy bien (material Ptr, bibliotecas de vectores), algunas áreas que conozco lo suficiente como para ser peligrosas (plantilla de haskell) y otras que no he tocado (marcos web, genéricos). En general, sin embargo, creo que entiendo el idioma bastante bien.

Una gran dificultad para aprender Haskell es la curva de aprendizaje (OMI muy pronunciada). Es necesario aprender muchas cosas interconectadas diferentes antes de poder ser productivo en el idioma, y ​​debido a que están interconectadas, es difícil comprenderlas sin al menos unos pocos meses de experiencia. Mi consejo es que continúes y si crees que no entiendes algo o que algo más profundo está sucediendo, probablemente tengas razón. Si no puede resolverlo ahora, simplemente continúe y regrese a él en aproximadamente un mes. Finalmente, progresará lo suficiente en múltiples frentes para que todo quede claro.

Como cualquier idioma, la mejor manera de progresar es escribir código. Tomará más tiempo porque Haskell está más lejos de los idiomas que ya conoces, pero valdrá la pena.


Después de un curso de programación funcional de 150 horas en la universidad, hicimos

  • Funciones de clasificación
  • Haciendo árboles binarios
  • Usando / escribiendo funciones como mapa, filtro, zip
  • .. podría haber olvidado algo

Así que solo lo básico diría, en aproximadamente un mes a tiempo completo. Cuatro días no es nada ... Creo que solo tendrá que escribir más código para acostumbrarse a la manera de pensar de la programación funcional. Implementando todo desde abajo hacia arriba, haciendo cosas más difíciles a medida que adquieres experiencia.


Estudié en una universidad de Haskell (Utrecht) y me gustó mucho Haskell, por lo que tomé los siguientes cursos que utilizaban Haskell:

  • Introducción PF (semestre)
  • Gramáticas y análisis con Haskell (semestre)
  • Implementación de lenguajes de programación (semestre)
  • Programación genérica (semestre)
  • Construcción de software (2 meses)
  • Programación Funcional Avanzada (2 meses)

También fui ayudante (Asistente del maestro) y ayudé con las prácticas de Introducción e Implementación. Y escribí mi M.Sc. en (Generic) Haskell.

Así que eso parece un montón, pero ''obtuve'' FP en algún lugar a mitad de camino en el curso de Introducción. Tener una sólida formación matemática me ayudó en mi caso, por lo que ya estaba acostumbrado a dividir los problemas en funciones simples. En cuanto a escribir programas reales, escribir un programa Go en Haskell fue un ejercicio divertido para aprender a trabajar con mónadas (la GUI estaba en TclHaskell, ugh!)


No soy un experto en Haskell, pero tengo dos sugerencias:

  • Tómese el tiempo para jugar con el cálculo lambda puro (o incluso SKI, si es valiente). Básicamente, Haskell le permite hacer las mismas cosas un poco más cómodas y seguras.
  • Trate de resolver problemas comunes, por ejemplo, del Proyecto Euler . Pero no se detenga ahí, intente comparar su código con las soluciones de otras personas.

Las estimaciones dadas de 1 ~ 3 meses para asimilar lo básico me parecen realistas.


Pasará un tiempo antes de que Haskell comience a tener sentido. Estoy en mi segundo mes de aprender Haskell y este es mi segundo intento en los últimos dos años. Esta vez, empecé con The Little Schemer. Luego vi los videos de Giesel. Leer el RWH por primera vez fue un desastre, pero ahora tiene un poco de sentido, así que espero que en otros 6 meses sea más claro. El código que puedo escribir en Haskell es mucho más sucinto.

La línea de fondo sigue adelante, tomará tiempo, pero vale la pena. Por cierto, IRC #haskell es un gran recurso para ayudarlo a ponerse al día.

Mi consejo es encontrar un pequeño proyecto de programación y roerlo en Haskell. No te preocupes demasiado por escribirlo a la manera de Haskelly. Solo empieza a hacerlo Haskell ..