Practical Optional Types for Clojure

4 years 3 months ago
Practical Optional Types for Clojure
Typed Clojure is an optional type system for Clojure, a dynamic language in the Lisp family that targets the JVM. Typed Clojure’s type system build on the design of Typed Racket, repurposing in particular occurrence typing, an approach to statically reasoning about predicate tests. However, in adapting the type system to Clojure, changes and extensions are required to accommodate additional language features and idioms used by Clojure programmers. In this paper, we describe Typed Clojure and present these type system extensions, focusing on three features widely used in Clojure. First, Java interoperability is central to Clojure’s mission but introduces challenges such as ubiquitous null; Typed Clojure handles Java interoperability while ensuring the absence of null-pointer exceptions in typed programs. Second, Clojure programmers idiomatically use immutable dictionaries for data structures; Typed Clojure handles this in the type system with multiple forms of heterogeneous diction...
Ambrose Bonnaire-Sergeant, Rowan Davies, Sam Tobin
Added 03 Apr 2016
Updated 03 Apr 2016
Type Journal
Year 2016
Where ESOP
Authors Ambrose Bonnaire-Sergeant, Rowan Davies, Sam Tobin-Hochstadt
Comments (0)