¿Cuál es una buena manera de aprender y comprender la escritura dependiente en un idioma como Idris / Coq / Agda?

El tutorial en el sitio web de Idris está muy bien escrito. Si está más interesado en la teoría detrás de la escritura dependiente, los “Temas avanzados en tipos y lenguajes de programación” de Benjamin Pierce profundizan en gran parte de la teoría (y es un buen seguimiento de su libro más popular de Tipos y lenguajes de programación).

También está el libro de Simon Thompson, Teoría de los Tipos y Programación Funcional, que analiza la teoría de los tipos con mucho detalle (incluida la escritura dependiente). Este está disponible en línea de forma gratuita en el enlace anterior.

Este tutorial de Agda también me ha sido recomendado varias veces, aunque todavía no lo he leído.

Creo que lo más importante es hacer muchas preguntas. Las comunidades detrás de estos idiomas son extremadamente útiles y todas tienen canales IRC en freenode con personas que están más que dispuestas a aclararle las cosas según sea necesario.

Para Agda hay un libro disponible gratuitamente (Programación funcional verificada en Agda).

Para Idris puede usar su documento oficial, aunque se espera que conozca a Haskell antes. También hay un curso en la universidad de la UIT para Idris presentado por Edvin Brady que me pareció útil. Si puedes esperar allí viene un libro [1]

Notas al pie

[1] Desarrollo guiado por tipos con Idris

A2A

De manera similar a cualquier otro concepto en informática: jugando con él, escribiendo sus propios ejemplos que lo usan y estudiando ejemplos escritos por otros. Puede intentar implementar aritmética de enteros a nivel de tipo como ejercicio, por ejemplo.

También es posible que desee analizar los antecedentes teóricos, como el isomorfismo de Curry-Howard. Depende de tus intereses y antecedentes previos. A menos que te interesen las matemáticas, puede que no tenga mucho sentido si no has visto y entendido algunas aplicaciones concretas primero.

“Fundamentos de software” es un libro bastante legible sobre probar y construir programas en Coq, la curva de aprendizaje es bastante suave. También hay traducciones de Idris y Agda en los trabajos.

More Interesting

A los 27 años, ¿soy demasiado viejo para aprender matemáticas avanzadas?

¿Por qué se le dio al F-117 Nighthawk un prefijo F?

¿Es posible escribir un programa para tabular la cantidad de tiempo que llevaría ver todos los programas en la lista instantánea de Netflix?

¿Cuál es el grado de una ecuación polinómica que tendría una raíz constructiva real positiva de esta forma, [math] \ sqrt {2} + \ sqrt [4] {3} [/ math]?

¿Cómo valora las opciones sobre acciones utilizando la transformación de Fourier?

Cómo encontrar un circuito de Euler en un gráfico en tiempo lineal

¿Es Python el mejor lenguaje de programación para las matemáticas aplicadas?

¿Por qué soy bueno en cursos intensivos de programación, pero sigo reprobando en cursos de teoría de informática? ¿Estoy en condiciones de ser ingeniero de software?

¿Cuál es la mejor manera de obtener una estimación numérica de la cantidad de conocimiento científico en el mundo? Sabemos con certeza que está aumentando, pero ¿cuánto más es ahora que, por ejemplo, en 1970?

¿Cuánto conocimiento de matemáticas se requiere para ser un programador?

¿Cuál es la negación de min y max?

¿Cuándo son dos algoritmos isomorfos?

¿Cuáles son las fórmulas matemáticas para expresiones informáticas como: x = x / 5?

¿Cuáles son los departamentos de investigación más sólidos para la teoría de la computabilidad (recursividad) en el mundo en este momento?

¿Practicar las matemáticas es bueno para la programación competitiva?