Application de la sémantique dénotationnelle à la conception de programmes

30

J'ai lu un peu sur la sémantique dénotationnelle (DS) et je suis très intrigué par le processus de conception de programmes informatiques où les types et les fonctions ont des correspondances fortes et claires avec les mathématiques.

Existe-t-il des ressources pour discuter en détail de la conception de programmes basés sur DS? J'ai vu quelques traitements superficiels du sujet.

Je suis familier avec Haskell, Scala, Common Lisp et un peu de Scheme, donc toutes les ressources qui utilisent ces langues seraient grandement appréciées.

Tim Stewart
la source
7
Vous devriez consulter le travail de Conal Elliott: conal.net
2
L'isomorphisme de Curry-Howard est le mot-clé, si vous ne le saviez pas déjà.
pedrofurla
2
J'ai pensé une chose similaire. J'ai essayé de concevoir une simulation numérique de points, de corps rigides et de fluides. Ceci ( github.com/takagi/SimulationDSL ) est l'une de mes expériences dans lesquelles j'ai exprimé l'algèbre vectorielle et les équations partielles dans Haskell DSL. J'ai également vérifié le travail de Conal Elliott.
3
Vous devriez vérifier LtU . Il y a probablement de bonnes vieilles discussions là-bas, ou au moins votre question serait mieux adaptée que sur SO
3
Vous voudrez peut-être lire Samuel Kamin "Une sémantique orientée vers l'implémentation des jolis combinateurs d'impression de Wadler". Il compare les approches opérationnelles et dénotationnelles à la mise en œuvre d'un exemple bien connu du monde réel et comprend le plaidoyer pour une approche dénotationnelle.
stephen tetley

Réponses:

13

La conception dénotationnelle ( conception de programme enracinée dans la sémantique dénotationnelle et découlant de celle-ci) est ma principale méthodologie. Il y a quelques années, en écrivant sur FRP, je suis devenu beaucoup plus clair sur ce que j'avais fait. Voir Programmation réactive fonctionnelle push-pull . Pour une description plus explicite du paradigme et une variété d'exemples, voir Conception dénotationnelle avec des morphismes de classe de type . Une fois que j'ai pris conscience du motif, j'ai commencé à le chercher partout. Là où cela échoue, je sais que j'ai une fuite d'abstraction. Pour une première description informelle, voir le billet de blog de Luke Palmer Semantic Design .

Je suis toujours intéressé par les applications de conception dénotationnelle, j'aimerais donc entendre parler de vos explorations.

Conal
la source
Merci pour les excellentes ressources. Je vais les vérifier avant de marquer la question comme ayant reçu une réponse.
Tim Stewart
Merci d'avoir donné les liens vers votre travail! C'est la 2ème fois que je me tourne vers l'étude. Malheureusement, conal.net ne répond pas. Y a-t-il d'autres endroits où l'on peut l'obtenir?
imz - Ivan Zakharyaschev
1
Eh bien, on peut aussi lire github.com/conal/talk-2014-bayhac-denotational-design/blob/…
imz - Ivan Zakharyaschev
1
@ imz - IvanZakharyaschev Désolé. Mon serveur Web est tombé en panne. Sauvegarder maintenant. J'espère que je vais le faire migrer bientôt, et ce sera plus stable.
Conal
7

Nous avons appliqué la sémantique dénotationnelle à la conception du langage elle-même, en faisant valoir que la conception des langues, en particulier des langues spécifiques à un domaine, devrait commencer par la définition de la sémantique. Si vous êtes intéressé par les détails, vous voudrez peut-être jeter un œil à la conception DSL basée sur la sémantique et à la sémantique d'abord! Repenser le processus de conception du langage .

Martin Erwig
la source
Merci pour les excellentes ressources. Je vais les vérifier avant de marquer la question comme ayant reçu une réponse.
Tim Stewart