On Tue, Feb 8, 2011 at 7:04 AM, Patrick Browne <span dir="ltr">&lt;<a href="mailto:patrick.browne@dit.ie">patrick.browne@dit.ie</a>&gt;</span> wrote:<br><div class="gmail_quote"><blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">

Consider the following definitions:<br>
1. Denotational semantics can be considered as relation between syntax<br>
and mathematical objects (the meaning of the syntax).<br>
2. Operational semantics can be considered as set of rules for<br>
performing computation.<br>
<br>
Question 1<br>
Applying these definitions in a Haskell context can I say that the<br>
lambda calculus provides both the operational and denotational<br>
semantics for Haskell programs at value level for definition and<br>
evaluations.<br>
<br>
Question 2<br>
Does it make sense to use these definitions at type level? If so, what<br>
exactly do they represent?<br>
<br>
Thanks,<br>
Pat<br></blockquote><div><br>Here&#39;s my personal denotational answer to question 2: I think of a type as denoting a collection of (mathematical) values. If an expression e has type T, then the meaning (value) of e is a member of the collection denoted by T. This simple principle, which is fundamental to how I think of functional programming, has consequences in library design, which I&#39;ve discussed at <a href="http://conal.net/blog/posts/notions-of-purity-in-haskell/">http://conal.net/blog/posts/notions-of-purity-in-haskell/</a> .<br>

<br>Regards, - Conal<br><br><br></div></div>