Giter Club home page Giter Club logo

kekka's Introduction

Kekka - 結果

Kekka is a λ-k implementation ported from Daan Leijen's Kōka compiler, that will eventually act as Brick's type-inference engine. Kōka (効果) means 'effect' or 'effective', and in recognition of both that and the ultimate purpose of the type system, the name Kekka (結果) was chosen, meaning 'effect' (in the sense of a result or consequence of an action, a slightly different connotation).

Unlike Kōka, which is a complete language, Kekka only strives to act as an inference and unification system, an intermediary step in the full process of compilation. Because of that, the goal is to have a completely AST-independent typing module that is not just usable by Brick/Kiln, but in other projects as well, like for error-checking and semantic analysis tools.

Documentation

Part of the reason I am porting this is to have a much better understanding of the internals of the system, as it is relatively complex when compared to something like a simple HM engine. I also want to explore the possibility of integrating function fragmentation and calling semantics similar to my experimentation in HMc, and see how far the effect recogniction can go in the area of concurrency and parallelization.

As I go, I will be documenting what I learn and understand, in hopes that it may also be helpful for other people. Documentation will be sparsely annotated with LaTeX, which can (will be able to) be formatted using YODA. This will not be literate programming, but I hope to add a large amount of documentation on the things that I do understand, as being very new to the field of programming language/type theory, I know from experience how hard it can be to get into.

Licensing

Kōka is licensed under the Apache License version 2.0. Because this is currently a direct port from Haskell to OCaml (for now), I consider Kekka to be a true derivative work, so it is also licensed under the APLv2.

Development

To get started working with Kekka, follow standard procedure for developing a project using OPAM:

$ git clone https://github.com/brick-lang/kekka
$ cd kekka
$ opam install . --deps-only

The project can be built simply using

$ dune build

or installed using

$ opam install .

kekka's People

Contributors

toroidal-code avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

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.