programacion org programming-languages erlang typechecking

programming-languages - programacion - erlang org download otp win64



Comprobación de tipos estáticos en Erlang (4)

revisa la herramienta Dializador

El dializador es una herramienta de análisis estático que identifica discrepancias de software tales como errores de tipo definido , código que se ha convertido en inactivo o no disponible debido a algún error de programación, pruebas innecesarias, etc. en módulos únicos de Erlang o aplicaciones enteras (conjuntos de).

Me estoy enamorando lentamente de Erlang, y solo tengo un gran, GRAN problema.

Soy un gran admirador de idiomas como Standart ML y ocaml con su fuerte comprobación estática de tipos.

¿Hay alguna forma agradable y limpia de introducir algunos tipos de comprobación de tipos estáticos en Erlang? Estoy mirando las anotaciones -type y -spec .

¿Alguien tiene una buena solución?


¡He estado allí! Amo tanto OCaml como Erlang y los uso regularmente.

Cuando comencé a usar Erlang, tenía años de experiencia con OCaml. Me llevó varias semanas adaptarme al hecho de que no hay ningún registrador de tilde estático en el compilador. Pero después de eso, el dolor desapareció por completo.

Hasta cierto punto, pasar sin el typechecker es un ejercicio que vale la pena. Para mí, fue una experiencia esclarecedora y realmente me hizo un mejor programador.

Sin embargo, hay un checador de tipo externo y estático para Erlang llamado Dializer . Me resulta muy útil. El problema es que debe llamarlo por separado y es lento . Ejecutarlo de vez en cuando (por ejemplo, antes de confirmar el código o como parte de compilaciones automatizadas) funciona muy bien. Nunca intenté ejecutarlo después de cada compilación, ya que sería una gran distracción esperar hasta que se complete.


Utilizo principalmente -spec y -type para fines de documentación: escribe especificaciones con -spec , luego lo comprueba con TypEr y luego (después de agregar alguna información adicional en formato edoc) genera documentación


A través de los años, hubo algunos intentos de construir sistemas tipo encima de Erlang. Uno de esos intentos ocurrió en 1997, dirigido por Simon Marlow, uno de los principales desarrolladores del compilador Haskell de Glasgow, y Philip Wadler, que trabajó en el diseño de Haskell y ha contribuido a la teoría detrás de las mónadas (Lea el documento sobre dicho sistema de tipos) . Joe Armstrong más tarde comentó sobre el papel:

Un día Phil me llamó por teléfono y anunció que a) Erlang necesitaba un sistema de tipo, b) que había escrito un pequeño prototipo de un sistema de tipo yc) que tenía un año sabático y que iba a escribir un sistema de tipos para Erlang y " ¿nos interesaba? "Respuesta -" Sí ".

Phil Wadler y Simon Marlow trabajaron en un sistema de tipos durante más de un año y los resultados se publicaron en [20]. Los resultados del proyecto fueron algo decepcionantes. Para empezar, solo un subconjunto del lenguaje era susceptible de verificación de tipos, la principal omisión fue la falta de tipos de procesos y de verificación de tipos de mensajes entre procesos.

http://learnyousomeerlang.com/types-or-lack-thereof