Giter Club home page Giter Club logo

nihil's Introduction

Nihil

Nihil icon

stars forks

Table of contents

About Nihil

programming language code size

Nihil is a statically- and quantitively-typed functional programming language aimed at producing type- and data-safe lazy programs running without Garbage Collectors.

It is more in a “proof of concept” stage than production-ready, but a prototype will soon appear as there aren't much things left to do. (well there is in terms of difficulty, but not in terms of number)

Why Nihil?

Nihil came to life after I had an idea: “what if we could control how much resources are used?”

In the beginning, I was willing to make an esoteric language, poorly designed, but functional.

Beginning with some C++, I built my own parser combinators library, an old crappy one, which in the end wasn't working that well, because of some strange things I am still unable to really understand.

@felko introduced me to Haskell, and I wanted to give it a try for many months. That was the perfect time to do so, and so did I restart everything, but this time in Haskell. This led me here, to what I currently have right now, a fully functional basic compiler, mostly written by myself (except the old kind checker, see this pull request).

Roadmap

The ultimate goal is to provide these features:

  • Basic features:
    • Anonymous functions
    • User defined operators with custom fixities
    • Pattern matching
    • Data types
    • Type aliases
  • Advanced features:
    • Kinds
    • GADTs
    • Equational pattern matching
    • Records
    • Row polymorphism
    • Type classes and instances
    • Quantitive types
    • Modules
    • Polymorphic kinds
  • Advanced future features (not in the prototype):
    • Rank N types / forall
    • Type families (type-level functions)
    • Type applications
    • Laziness
    • Dependent types
    • Algebraic effects ?

Unicode

Nihil natively supports some unicode equivalents to ASCII characters:

ASCII Unicode
->
=>
\ λ
Prod

Examples

Some code examples can be found in the examples folder.

Contributors

User What has been done
@felko Kind checker ; various help about many subjects (parsing, typechecking...)
Huge thanks for all the help given.
@mesabloo Basically everything else

References, inspirations

  • The Granule project, a statically typed functional programming language with Graded Modal Types
  • Pikelet, a dependently typed functional programming language
  • GHC, the Great Glasgow Haskell Compiler

nihil's People

Contributors

mesabloo avatar felko 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.