Anwenden von Denotational Semantics auf den Entwurf von Programmen

30

Ich habe ein wenig über die Denotationssemantik (DS) gelesen und bin sehr fasziniert von dem Prozess des Entwurfs von Computerprogrammen, bei denen Typen und Funktionen starke und klare Zuordnungen zur Mathematik aufweisen.

Gibt es Ressourcen, die das Entwerfen von Programmen auf der Basis von DS im Detail erläutern? Ich habe ein paar oberflächliche Behandlungen des Themas gesehen.

Ich kenne mich mit Haskell, Scala, Common Lisp und ein bisschen Scheme aus, daher wären alle Ressourcen, die diese Sprachen verwenden, sehr dankbar.

Tim Stewart
quelle
7
Sie sollten sich die Arbeit von Conal Elliott ansehen
2
Curry-Howard-Isomorphismus ist das Schlüsselwort, wenn Sie es noch nicht wussten.
pedrofurla
2
Ich dachte etwas Ähnliches. Ich habe versucht, eine numerische Simulation von Punkten, starren Körpern und Flüssigkeiten zu entwerfen. Dies ( github.com/takagi/SimulationDSL ) ist eines meiner Experimente, bei denen ich Vektoralgebra und Teilgleichungen in Haskell DSL ausgedrückt habe. Ich habe auch Conal Elliotts Arbeit überprüft.
3
Sie sollten LtU überprüfen . Es gibt wahrscheinlich einige gute alte Diskussionen gibt, oder zumindest Ihre Frage würde besser passen da sein als auf SO
3
Vielleicht möchten Sie Samuel Kamins "Eine implementierungsorientierte Semantik von Wadlers hübschen Druckkombinatoren" lesen. Es vergleicht operationelle und denotationale Ansätze, um ein bekanntes, reales Beispiel zu implementieren, und beinhaltet die Befürwortung eines denotationalen Ansatzes.
Stephen Tetley

Antworten:

13

Denotational Design (Programmdesign, das auf denotationalen Semantiken basiert und aus diesen resultiert) ist meine primäre Methodik. Als ich vor ein paar Jahren über FRP schrieb, wurde mir viel klarer, was ich getan hatte. Siehe Push-Pull-Funktion Reaktive Programmierung . Eine ausführlichere Beschreibung des Paradigmas und eine Vielzahl von Beispielen finden Sie unter Denotational Design with Type Class Morphisms . Als ich mir des Musters bewusst wurde, fing ich an, überall danach zu suchen. Wo es fehlschlägt, weiß ich, dass ich ein Abstraktionsleck habe. Eine frühe, informelle Beschreibung finden Sie in Luke Palmers Blogbeitrag Semantic Design .

Ich bin immer an Anwendungen für denotationales Design interessiert, daher würde ich gerne etwas über Ihre Erkundungen erfahren.

Conal
quelle
Vielen Dank für die tollen Ressourcen. Ich werde sie überprüfen, bevor ich die Frage als beantwortet markiere.
Tim Stewart
Vielen Dank für die Links zu Ihrer Arbeit! Es ist das zweite Mal, dass ich es studiere. Conal.net antwortet leider nicht. Gibt es andere Orte, an denen man es bekommen kann?
imz - Ivan Zakharyaschev
1
Nun, man kann auch lesen github.com/conal/talk-2014-bayhac-denotational-design/blob/…
imz - Ivan Zakharyaschev
1
@ imz - IvanZakharyaschev Entschuldigung. Mein Webserver ist ausgefallen. Jetzt zurück. Hoffentlich wird es bald migriert und stabiler.
Conal
7

Wir haben die Denotationssemantik auf das Sprachdesign selbst angewendet und argumentiert, dass das Design von Sprachen, insbesondere domänenspezifischen Sprachen, mit der Definition der Semantik beginnen sollte. Wenn Sie sich für Details interessieren, sollten Sie sich Semantics-Driven DSL Design und Semantics First! Den Sprachentwurfsprozess überdenken .

Martin Erwig
quelle
Vielen Dank für die tollen Ressourcen. Ich werde sie überprüfen, bevor ich die Frage als beantwortet markiere.
Tim Stewart