Discussion about this post

User's avatar
Fred Eisele's avatar

"You want to write down a question and run it to get the answer."

It seems like the appropriate designation should derive from this statement.

Question: Interrogative <- Denotational <- Declarative

Answer: This implies a form of proof...

Proof: Constructive <- Operational <- Imperative

"A proof is a program",

describes the Curry-Howard Correspondence, a fundamental concept where logical propositions map to types and proofs map to programs (lambda terms) of those types.

Hunter's avatar

Hello Eric. First of all, I want to thank you for all of your work on FP including Grokking Simplicity. I personally found it amazingly helpful.

Now, for other reasons before I saw this article, I went down the rabbit hole of reading Plotkin's "LCF Considered as a Programming Language" (https://homepages.inf.ed.ac.uk/gdp/publications/LCF.pdf) and "A Structural Approach to Operational Semantics" (https://homepages.inf.ed.ac.uk/gdp/publications/sos_jlap.pdf).

So let me naively ask this question. Is the argument being made by Mr. Elliott et al that β-reduction is imperative as you reduce to a normal term?

My completely naive and wrong take is that Plotkin observed some issues of program equivalence with the mathematical model of Denotational Semantics, and that context is not pertaining to a declarative versus imperative programming framing or taxonomy.

Continuing with the naivety, I would argue that Lambda Calculus and Functional Programming have both an Aristotelian Theoretical Reasoning (Proofs) and Procedural Reasoning (β-reduction) nature, and Operational Semantics provides a perspective of the balance of the two but is still within the domain of functional or "declarative" programming. Operational Semantics is not by definition "imperative programming". β-reduction yes. Imperative programming by definition no.

Your framing of Actions as time entanglement and pure functions as calculations comes to mind. Functional or declarative programming does not eliminate actions instead it has conventions for mitigating actions/time. Maybe Plotkin is just reminding us that like day and night, functional programming is both referential transparency AND time mitigation. Or, functional programming is both Theoretical Reasoning and β-reduction aka Procedural Reasoning.

I know .. I sound like Jacques Derrida :-). There is no outside text. :-)

Functional Programming is Denotational Semantics with differing eternally unstable Operational Semantics :-) :-) :-)

OK. Fun stuff. I know I am a rank amateur and all wet.

Peace

9 more comments...

No posts

Ready for more?