Giter Club home page Giter Club logo

sixty's Introduction

sixty Gitter chat

A type checker for a dependent type theory using normalisation by evaluation, with an eye on performance. Might go into Sixten one day.

Roadmap

  • Pre-syntax
  • Core syntax
  • Safe and fast phantom typed De Bruijn indices
  • Evaluation
    • Inlining of globals
  • Readback
  • Parsing
    • Indentation-sensitivity
  • Pretty printing
    • Scope-aware name printing
  • Unification and meta variables
    • Pruning
    • The "same meta variable" rule
    • Solution inlining
    • Elaboration of meta variable solutions to local definitions
    • Case expression inversion
  • Basic type checking
  • Query architecture
    • Parallel type checking
  • Simple modules
    • Top-level definitions
    • Name resolution
    • Imports
  • Tests
    • Error tests
    • Multi-module tests
  • Position-independent implicit arguments
  • Errors
    • Source location tracking
      • Meta variable locations
    • Error recovery during
      • Parsing
      • Elaboration
      • Unification
    • Print the context and let-bound variables (including metas)
  • Data
    • Elaboration of data definitions
    • Constructors
      • Type-based overloading
    • ADT-style data definitions
  • Pattern matching elaboration
    • Case expressions
    • Exhaustiveness check
    • Redundant pattern check
    • Clause elaboration
    • Pattern lambdas
  • Inductive families
  • Glued evaluation
  • Let definitions by clauses
    • Recursive lets
  • Command-line parser
  • Language server
    • Diagnostics
    • Hover
      • Print the context and let-bound variables (including metas)
    • Jump to definition
    • Multi file projects
    • Reverse dependency tracking
    • Completion
    • Type-based refinement completion snippets
    • Find references
    • Renaming
    • Code lenses
    • Language server tests
  • File watcher
  • Cached builds
    • Per-module caches
  • Backend
    • Typed lambda lifting
    • Typed closure conversion
    • Code generation
    • Garbage collection
    • Extern code
  • Prevent CBV-incompatible circular values
  • Literals
    • Numbers
    • Strings
  • Records
  • Binary/mixfix operators
  • REPL
  • Integrate into Sixten

Inspiration

sixty's People

Contributors

ollef avatar ehamberg avatar

Watchers

James Cloos 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.