Estoy tratando de aprender Haskell escribiendo pequeños programas ... así que actualmente estoy escribiendo un analizador/analizador para expresiones simples. (Sí, podría usar Alex/Happy ... pero primero quiero aprender el lenguaje central).¿Cuál es la alternativa a las excepciones en una recursividad profunda de Haskell?
Mi programa de análisis es esencialmente un conjunto de funciones recursivas que construir un árbol. En el caso de los errores de sintaxis, normalmente lanzaría una excepción (es decir, si estuviera escribiendo en C#), pero eso parece desanimado en Haskell.
Entonces, ¿cuál es la alternativa? Realmente no quiero probar los estados de error en cada bit del analizador. Quiero terminar con un árbol de nodos válido o un estado de error con detalles.
más grande programas Haskell ocultar estos detalles haciendo instancia de 'Mónada (O ErrorDetails), donde ...' por lo que no tiene que manejar de forma explícita en el caso de error cada función. –
@TomMD: Sí, pero no sugieren "hace es el propietario mónada" a un alumno nuevo;) – delnan
bien siempre y cuando él sabe que sólo está aprendiendo/usando una cuarta parte de Haskell haciendo caso omiso de las mónadas y transformadores. De lo contrario, tendrá la falsa impresión de que Haskell es excesivamente detallado. –