scala haskell agda dependent-type idris

scala - ¿Por dónde empezar con la programación de tipo dependiente?



haskell agda (2)

Hay un tutorial de Idris, un tutorial de Agda y muchos otros documentos de estilo tutorial y material introductorio con referencias interminables de cosas por aprender. Estoy medio arrastrándome en medio de todo esto y la mayor parte del tiempo me quedo atascado con notaciones matemáticas y aparece una nueva terminología de repente sin explicación. Tal vez mi matemática apesta :-)

¿Hay alguna forma disciplinada de abordar la programación de tipo dependiente? Como cuando quieres aprender Haskell, comienzas con "Enseña a ti mismo un Haskell", cuando quieres aprender a Scala, comienzas con el libro de Odersky, para Ruby lees ese extraño tutorial con errores mutados. Pero no puedo iniciar Agda o Idris con sus libros. Están muy por encima de mi cabeza. Probé con Coq y me quedé atrapado en su estilo de probar todo. Agda requiere un gran conocimiento matemático e Idris, bueno, ¡dejémoslo por ahora!

Entiendo muy bien los sistemas de tipo estático, soy bastante competente con Scala y puedo usar Haskell si es necesario. Entiendo el Paradigma funcional y lo uso día a día, entiendo tipos de datos algebraicos y GADT (bastante bien en realidad) y recientemente logré comprender el Cubo de Lambda. Sin embargo, me faltan las partes de matemáticas y lógica.


(Aviso: esta es una publicidad propia)

Estoy escribiendo un tutorial de Agda y mi objetivo principal es permitir que las personas jueguen con Agda sin antecedentes teóricos.

Este tutorial puede resolver la mayoría de tus problemas:

  • intenta explicar la programación de Agda sin referencias externas
  • requiere solo mathemtaics de escuela secundaria
  • intenta enseñar prácticas de programación también

Está en desarrollo, pero la primera mitad está lista.


Recomiendo encarecidamente las Fundaciones de software . Este libro es bastante bueno presentándote a Coq un paso a la vez. Hay una gran cantidad de pruebas de teoremas, sí, pero eso es parte de la delicia de los tipos dependientes. Es una gran sensación cuando la línea entre "programación" y "prueba" comienza a difuminarse.

Sin embargo, me faltan las partes de matemáticas y lógica.

Creo que Software Foundations hace un muy buen trabajo para ponerlo al día con la lógica que necesita saber. Sin embargo, estar cómodo con el concepto de implicación ayuda.