Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

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.

share|improve this question

migrated from Jan 16 '13 at 18:14

This question came from our site for professional and enthusiast programmers.

You should check out the work by Conal Elliott: – kosmikus Jan 16 '13 at 0:16
Curry-Howard isomorphism is the keyword, if you didn't know already. – pedrofurla Jan 16 '13 at 2:28
I thought a similar thing. I tried to design numerical simulation of points, rigid bodies and fluid. This ( is one of my experiment in which I expressed vector algebra and partial equations in Haskell DSL. I also checked Conal Elliott's work. – masayuki takagi Jan 16 '13 at 2:55
You should check out LtU. There are probably some good old discussions there, or at least your question would be a better fit there than on SO – jberryman Jan 16 '13 at 16:00
You might want to read Samuel Kamin's "An implementation-oriented semantics of Wadler's pretty-printing combinators". It compares operational and denotational approaches to implementing a well known, real world example and includes advocacy for a denotational approach. – stephen tetley Jan 16 '13 at 17:31
up vote 12 down vote accepted

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.

share|improve this answer
Thanks for the great resources. I'm going to check them out before I mark the question as answered. – Tim Stewart Feb 10 '13 at 5:25
Thanks for giving the links to your work! It's the 2nd time I turn to studying it. Unfortunately, does not answer. Are there other places where one can get it? – imz -- Ivan Zakharyaschev Dec 2 '14 at 18:12
@imz--IvanZakharyaschev Sorry. My web server went down. Back up now. Hopefully I'll have it migrated soon, and it will be more stable. – Conal Dec 3 '14 at 18:59

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.

share|improve this answer
Thanks for the great resources. I'm going to check them out before I mark the question as answered. – Tim Stewart Feb 10 '13 at 5:26

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.