Skip to content

Latest commit

 

History

History
35 lines (27 loc) · 1.26 KB

File metadata and controls

35 lines (27 loc) · 1.26 KB
layout developer-doc
title Goals for the Enso Type System
category types
tags
types
goals
design
order 1

Goals for the Enso Type System

In our design for Enso, we firmly believe that the type system should be able to aid the user in writing correct programs, far and above anything else. However, with so much of our targeted user-base being significantly non-technical, it needs to be as unobtrusive as possible.

High-Level Goals

The high-level goals for the Enso type system are as follows:

  • Inference should have maximal power. We want users to be forced to write type annotations in as few situations as possible. This means that, ideally, we are able to infer higher-rank types and make impredicative instantiations without annotations.
  • Error messages must be informative. This is usually down to the details of the implementation, but we'd rather not employ an algorithm that discards contextual information that would be useful for crafting useful errors.
  • Our aim is to create a powerful type system to support development, rather than turn Enso into a research language. We want users to be able to add safety gradually.