Ideal models for pointwise relational and state-free imperative programming

Research output: Chapter in Book/Report/Conference proceedingConference contributionpeer-review

9 Scopus citations

Abstract

Point-free relation calculus and its categorical generalizations have been fruitful in development of calculi of functional programming, especially for general principles, e.g., polytypic patterns of recursion on inductive data. But in specific applications, pointwise formulations can be more convenient and comprehensible than point-free combinators. A typed lambda calculus including non-injective pattern-matching was given by de Moor and Gibbons, but their relational semantics has shortcomings. We give an alternative based on a categorical axiomatization of ideal relations. We give a second semantics based on predicate transformers, and show how the pattern construct offers a new integration of imperative and functional programming. Simulation results justify the semantics.

Original languageEnglish
Title of host publicationProceedings of the 3rd International ACM SIGPLAN Conference on Principles and Practice of Declarative Programming
Pages4-15
Number of pages12
DOIs
StatePublished - 2001
EventProceedings of the 3rd International ACM SIGPLAN Conference on Principles and Practice of Declarative Programming (PPDP'00) - Florence, Italy
Duration: 5 Sep 20017 Sep 2001

Publication series

NameProceedings of the 3rd International ACM SIGPLAN Conference on Principles and Practice of Declarative Programming

Conference

ConferenceProceedings of the 3rd International ACM SIGPLAN Conference on Principles and Practice of Declarative Programming (PPDP'00)
Country/TerritoryItaly
CityFlorence
Period5/09/017/09/01

Keywords

  • Categorical semantics
  • Functional, relational, imperative programming
  • Integration of paradigms
  • Predicate transformers

Fingerprint

Dive into the research topics of 'Ideal models for pointwise relational and state-free imperative programming'. Together they form a unique fingerprint.

Cite this