2011-04-06 10 views
10

Actualmente estoy tratando de averiguar qué aspectos de mi programa pueden ser verificados estáticamente por el compilador scala. Después de leer this question, se me ocurrió la idea de los patrones de diseño para los tipos. Me resulta bastante complicado entender lo que podría ser posible con el sistema de tipos de Scala. Así que me gustaría ver los usos prácticos (no la aritmética peano o cosas por el estilo). Patrones sencillos que reaparecen a menudo en el código normal.Patrones de diseño para la comprobación de tipo estático

¿Alguien sabe de algún blog o incluso libros que se ocupan de esta cuestión? Preferiblemente en Scala, pero también podría ser útil para otros idiomas.

+0

¿Por qué está etiquetado Haskell? Estos enlaces pueden ser de interés: http://blog.ezyang.com/2010/08/type-kata-controlled-sharing-of-references/ y http://blog.ezyang.com/2010/08/type- kata-newtypes/ –

+0

@Edward Porque el sistema de tipos de Scala parece ser similar al sistema de tipos de Haskell y quizás los patrones para Haskell (que ha existido por más tiempo) se transfieren a Java. – ziggystar

+0

@Edward Creo que esto es válido porque los experimentos más aventureros con el sistema de tipos de Scala parecen provenir de personas con antecedentes de Haskell, p. El blog de Rúnar y la gente de Scalaz. –

Respuesta

6

Creo que una de las cosas más útiles que merecerían el nombre "patrón de diseño" es la técnica de "tipos fantasma". Es una forma más o menos sistemática de codificar información estática en un parámetro de tipo. Vea algunos ejemplos:

También puede estar interesado en una wondertrick Oleg relacionados: Lightweight static capabilities (con Chung-Chieh Shan).

+1

[tipos de fantasmas en Scala] (http://james-iry.blogspot.com /2010/10/phantom-types-in-haskell-and-scala.html) – ziggystar

2

lo podría hacer en the design advice for Haskell, y en concreto, algunos de los trabajos de investigación más recientes sobre la incorporación de propiedades fuertes en el sistema de tipos:

  • Poner Curry-Howard para trabajar Tim Sheard, Proceedings of the ACM 2005 Taller de SIGPLAN en Haskell. Tallin, Estonia, 74 - 85, 2005
  • Verificación del programa basado en el lenguaje a través de los tipos expresivos Martin Sulzmann y Razvan Voicu. En Lenguajes de programación cumple con Verificación de programa (PLPV'06)
  • Contratos con tipo de programación funcional Ralf Hinze, Johan Jeuring y Andres Loh.
  • Una biblioteca de información liviana: seguridad de flujo en Haskell A Russo, K Claessen, J Hughes.

No hay metodologías estándar aquí todavía, aunque hay muchos buenos ejemplos de problemas individuales.