I’ve read a bit on denotational semantics (DS) and I’m very intrigued about the process of designing computer programs where types and functions have strong and clear mappings to mathematics.
Are there any resources that discuss designing programs based on DS in detail? I’ve seen a few superficial treatments of the subject.
I’m conversant in Haskell, Scala, Common Lisp, and a bit of Scheme so any resources that use those languages would be greatly appreciated.
10
Denotational design (program design rooted in and flowing from denotational semantics) is my primary methodology. A few years ago while writing about FRP, I got much clearer about what I’d been doing. See Push-pull functional reactive programming. For a more explicit description of the paradigm and a variety of examples, see Denotational design with type class morphisms. Once I became conscious of the pattern, I started looking for it everywhere. Where it fails, I know I have an abstraction leak. For an early, informal description, see Luke Palmer’s blog post Semantic Design.
I’m always interested in applications of denotational design, so I’d love to hear about your explorations.
4
We have applied denotational semantics to language design itself, arguing that the design of languages, in particular, domain-specific languages, should start with the definition of the semantics. If you are interested in the details, you might want to take a look at Semantics-Driven DSL Design and Semantics First! Rethinking the Language Design Process.
1