Grokking the Sequent Calculus (Functional Pearl)
The paper introduces the lambda-mu-mu-calculus as a term assignment system for the sequent calculus, emphasizing its symmetry and suitability for compiler intermediate languages. It targets a broader audience and will be presented at ICFP '24.
Read original articleThe paper titled "Grokking the Sequent Calculus (Functional Pearl)" introduces the lambda-mu-mu-calculus as a term assignment system for the sequent calculus, providing a more symmetric alternative to natural deduction. The lambda-mu-mu-calculus is highlighted for its suitability as a foundation for compiler intermediate languages due to its representation of evaluation contexts. The paper aims to make the lambda-mu-mu-calculus accessible to a broader audience beyond type theorists and logicians, targeting compiler hackers and programming-language enthusiasts. It presents an introduction by developing a compiler from a surface language to the lambda-mu-mu-calculus as a compiler intermediate language. The work is positioned as a contribution to bridging the gap between experts in the sequent calculus and a wider community interested in its applications. The paper has been accepted for presentation at ICFP '24 and is categorized under Programming Languages (cs.PL) on arXiv.
Related
Flambda2 Ep. 2: Loopifying Tail-Recursive Functions
Flambda2's Episode 2 explores Loopify, an optimization algorithm for tail-recursive functions in OCaml. It transforms recursion into loops, enhancing memory efficiency without compromising functional programming principles.
Why are module implementation and signatures separated in OCaml? (2018)
Separation of module implementation and signatures in OCaml enables scalable builds, creation of cmi files, and streamlined interface modifications. Emphasizing abstraction and implementation separation enhances modular programming and system reasoning.
Deriving Dependently-Typed OOP from First Principles
The paper delves into the expression problem in programming, comparing extensibility in functional and object-oriented paradigms. It introduces dependently-typed object-oriented programming, emphasizing duality and showcasing transformations. Additional appendices are included for OOPSLA 2024.
A reckless introduction to Hindley-Milner type inference (2019)
Hindley-Milner type inference balances expressiveness and legibility in programming languages like Elm and Haskell. It enhances correctness by enforcing strict type checking, limiting coding practices for improved type safety.
Denotational Semantics and a Fast Interpreter for jq (2023)
The paper introduces denotational semantics for the jq programming language, addressing the lack of a formal specification. A new interpreter, jaq, outperforms jq on benchmarks, submitted to OOPSLA 2023.
Related
Flambda2 Ep. 2: Loopifying Tail-Recursive Functions
Flambda2's Episode 2 explores Loopify, an optimization algorithm for tail-recursive functions in OCaml. It transforms recursion into loops, enhancing memory efficiency without compromising functional programming principles.
Why are module implementation and signatures separated in OCaml? (2018)
Separation of module implementation and signatures in OCaml enables scalable builds, creation of cmi files, and streamlined interface modifications. Emphasizing abstraction and implementation separation enhances modular programming and system reasoning.
Deriving Dependently-Typed OOP from First Principles
The paper delves into the expression problem in programming, comparing extensibility in functional and object-oriented paradigms. It introduces dependently-typed object-oriented programming, emphasizing duality and showcasing transformations. Additional appendices are included for OOPSLA 2024.
A reckless introduction to Hindley-Milner type inference (2019)
Hindley-Milner type inference balances expressiveness and legibility in programming languages like Elm and Haskell. It enhances correctness by enforcing strict type checking, limiting coding practices for improved type safety.
Denotational Semantics and a Fast Interpreter for jq (2023)
The paper introduces denotational semantics for the jq programming language, addressing the lack of a formal specification. A new interpreter, jaq, outperforms jq on benchmarks, submitted to OOPSLA 2023.