We gratefully acknowledge support from
the Simons Foundation and member institutions.
Full-text links:

Download:

Current browse context:

cs.PL

Change to browse by:

cs

References & Citations

DBLP - CS Bibliography

Bookmark

(what is this?)
CiteULike logo BibSonomy logo Mendeley logo del.icio.us logo Digg logo Reddit logo

Computer Science > Programming Languages

Title: A Functional Programming Language with Versions

Authors: Yudai Tanabe (Tokyo Institute of Technology, Japan), Luthfan Anshar Lubis (Tokyo Institute of Technology, Japan), Tomoyuki Aotani (Mamezou, Japan), Hidehiko Masuhara (Tokyo Institute of Technology, Japan)
Abstract: While modern software development heavily uses versioned packages, programming languages rarely support the concept of versions in their semantics, which makes software updates more bulky and unsafe. This paper proposes a programming language that intrinsically supports versions. The main goals are to design core language features to support multiple versions in one program and establish a proper notion of type safety with those features. The proposed core calculus, called Lambda VL, has versioned values, each containing different values under different versions. We show the construction of the type system as an extension of coeffect calculus by mapping versions to computational resources. The type system guarantees the existence of a valid combination of versions for a program. The calculus enables programming languages to use multiple versions of a package within a program. It will serve as a basis for designing advanced language features like module systems and semantic versioning.
Subjects: Programming Languages (cs.PL)
Journal reference: The Art, Science, and Engineering of Programming, 2022, Vol. 6, Issue 1, Article 5
DOI: 10.22152/programming-journal.org/2022/6/5
Cite as: arXiv:2107.07301 [cs.PL]
  (or arXiv:2107.07301v1 [cs.PL] for this version)

Submission history

From: Yudai Tanabe [view email]
[v1] Thu, 15 Jul 2021 13:05:54 GMT (641kb)

Link back to: arXiv, form interface, contact.