On 11-01-17 01:55 PM, David Sankel wrote:
I've recently had the opportunity to explain in prose what denotational
semantics are to a person unfamiliar with it. I was trying to get across
the concept of distilling the essence out of some problem domain. I
wasn't able to get the idea across so I'm looking for some simple ways
to explain it.

Does anyone know of a way to explain what's the meaning and objective of
"distilling the essence" without introducing more jargon. One thing that
comes to mind is how Newton's equations for gravity were a distillation
of the essence of the way things fall.

(I'm afraid Newton's equations introduced more jargon too.)

A denotational semantics maps programs to math things. The mapping has to be by structural recursion over program syntax.

Why math: it's the universal modelling language. Why do we model programs by a math model: to explain and predict.

Why structural recursion over syntax: to be compositional, the same reason we stay close to CFGs for syntax: you can build bottom-up and analyze top-down.

It also happens that the math things are given a partial order to help answer "what to do with loop constructs and/or cyclic definitions". A moment of trying to re-invent denotational semantics reveals that this is the only hard part, and so learning denotational semantics typically takes 90% of the time on this part.

_______________________________________________
Haskell-Cafe mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to