GithubHelp home page GithubHelp logo

richcarl / erlt Goto Github PK

View Code? Open in Web Editor NEW

This project forked from whatsapp/erlt

0.0 2.0 0.0 9.07 MB

Early prototype of ErlT, an experimental Erlang dialect with first-class support for static typing.

License: Apache License 2.0

Makefile 0.69% Erlang 78.87% Scala 20.03% Emacs Lisp 0.06% Dhall 0.34%

erlt's Introduction

ErlT - experimental Erlang dialect

This repository contains an early prototype of ErlT, an experimental Erlang dialect with first-class support for static typing.

ErlT targets existing Erlang users and codebases. It builds on Erlang to provide greater support for working with large Erlang codebases. It does this by introducing static types in a way which opens the door to greater IDE integration, safer refactorings, and faster, more specific feedback from the compiler.

The main goal of ErlT is enriching Erlang with static typing capabilities. This involves:

  • Providing a feasible path for gradually adopting ErlT with static typing for existing teams and codebases.
  • Designing and integrating static typing capabilities of ErlT in a coherent and ergonomic way. It should be a language that users want to use.

See more details in ErlT Vision.

ErlT overview

By default, ErlT is checked (i.e. statically typed), but it also allows some functions or modules to be unchecked (i.e. dynamically typed), both to aid migration and to allow code to be written for which we don't yet have a good typing model. ErlT requires adding specs to unchecked code in order for it to be accessible and typeable from checked code.

Scope of the current prototype includes:

  • first-class optional static typing model, based on Hindley-Milner
  • new first-class data types
  • interoperability between statically typed (checked) and dynamically typed (unchecked) of the language within a single module
  • improved variable scoping model: (almost) lexical scoping and more explicit rules for variable shadowing
  • minimal integrations with rebar3

See more details in ErlT Language Overview.

Examples of things that didn't make it into this prototype:

  • typing of concurrency primitives
  • namespaces and namespace management
  • stdlib and library wrapping mechanisms
  • IDE/editor integration
  • language capabilities to aid the adoption of static typing
  • tooling for migrating from Erlang to ErlT

Getting started with ErlT

Read ErlT Language Overview.

To play with ErlT code, see Examples.

Prerequisites:

  • erlang with OTP 23 or higher
  • rebar3 version 3.14.1 or higher

E.g. on MacOS:

brew install erlang rebar3

Quick Links

Contributing

This project is read-only and not accepting contributions.

Feel free to clone. It is open-sourced under the Apache 2 license. see LICENSE file for details.

Development

For information on how to navigate ErlT development, see the Development Guide.

erlt's People

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.