Aplicación de semántica denotativa al diseño de programas

30

He leído un poco sobre semántica denotativa (DS) y estoy muy intrigado por el proceso de diseño de programas de computadora donde los tipos y funciones tienen asignaciones claras y fuertes a las matemáticas.

¿Hay algún recurso que discuta el diseño de programas basados ​​en DS en detalle? He visto algunos tratamientos superficiales del tema.

Conozco Haskell, Scala, Common Lisp y un poco de Scheme, por lo que cualquier recurso que use esos idiomas sería muy apreciado.

Tim Stewart
fuente
77
Deberías ver el trabajo de Conal Elliott: conal.net
2
El isomorfismo de Curry-Howard es la palabra clave, si aún no lo sabía.
pedrofurla
2
Pensé algo similar. Traté de diseñar una simulación numérica de puntos, cuerpos rígidos y fluidos. Este ( github.com/takagi/SimulationDSL ) es uno de mis experimentos en el que expresé álgebra vectorial y ecuaciones parciales en Haskell DSL. También revisé el trabajo de Conal Elliott.
3
Deberías revisar LtU . Probablemente hay algunos buenos viejos discusiones allí, o al menos su pregunta sería un mejor ajuste allí que el SO
3
Es posible que desee leer "Una semántica orientada a la implementación de los combinadores de impresión bonita de Wadler" de Samuel Kamin. Compara los enfoques operacionales y denotacionales para implementar un ejemplo bien conocido del mundo real e incluye la defensa de un enfoque denotacional.
Stephen Tetley

Respuestas:

13

El diseño denotacional ( diseño de programa arraigado y que se deriva de la semántica denotacional) es mi metodología principal. Hace unos años, mientras escribía sobre FRP, me puse mucho más claro sobre lo que había estado haciendo. Consulte Programación funcional reactiva Push-pull . Para una descripción más explícita del paradigma y una variedad de ejemplos, vea Diseño denotacional con morfismos de clase de tipo . Una vez que tomé conciencia del patrón, comencé a buscarlo en todas partes. Donde falla, sé que tengo una fuga de abstracción. Para una descripción temprana e informal, vea la publicación del blog de Luke Palmer Semantic Design .

Siempre me interesan las aplicaciones de diseño denotacional, por lo que me encantaría saber acerca de sus exploraciones.

Conal
fuente
Gracias por los grandes recursos. Voy a revisarlos antes de marcar la pregunta como respondida.
Tim Stewart
¡Gracias por dar los enlaces a tu trabajo! Es la segunda vez que me vuelvo a estudiarlo. Desafortunadamente, conal.net no responde. ¿Hay otros lugares donde uno puede conseguirlo?
imz - Ivan Zakharyaschev
1
Bueno, también se puede leer github.com/conal/talk-2014-bayhac-denotational-design/blob/…
imz - Ivan Zakharyaschev
1
@ imz - IvanZakharyaschev Lo siento. Mi servidor web se cayó. Copia ahora. Con suerte, lo migraré pronto, y será más estable.
Conal
7

Hemos aplicado la semántica denotativa al diseño del lenguaje en sí, argumentando que el diseño de los lenguajes, en particular, los lenguajes específicos de dominio, debe comenzar con la definición de la semántica. Si está interesado en los detalles, ¡quizás quiera echar un vistazo a Semantics-Driven DSL Design y Semantics First! Repensar el proceso de diseño del lenguaje .

Martin Erwig
fuente
Gracias por los grandes recursos. Voy a revisarlos antes de marcar la pregunta como respondida.
Tim Stewart