1
1
mirror of https://github.com/anoma/juvix.git synced 2024-11-23 16:25:37 +03:00
Juvix empowers developers to write code in a high-level, functional language, compile it to gas-efficient output VM instructions, and formally verify the safety of their contracts prior to deployment and execution.
Go to file
2021-11-28 12:24:14 +01:00
.github/workflows Add CI to the qtt branch 2021-10-26 15:09:39 +02:00
doc First commit, initial project template. 2021-09-26 18:59:51 +02:00
notes [ Juvix.Parser w.i.p ] fixing cabal compilation. 2021-11-13 22:46:54 +01:00
src Added holes for the parser. 2021-11-22 16:23:26 +01:00
.ghci First commit, initial project template. 2021-09-26 18:59:51 +02:00
.gitignore [ .gitignore ] added agda folders 2021-11-11 18:26:02 +01:00
.hlint.yaml w.i.p. adding ideal modules to cabal. Check compilation. 2021-11-14 14:22:29 +01:00
cabal.project Minor additions 2021-10-18 19:21:30 +02:00
CHANGELOG.md First commit, initial project template. 2021-09-26 18:59:51 +02:00
hie.yaml [ hie.yaml ] fixed support to work in vscode 2021-10-30 12:30:06 +02:00
LICENSE First commit, initial project template. 2021-09-26 18:59:51 +02:00
Makefile WIP. Adapting source code from heliaxdev/juvix for parsing purposes. 2021-11-11 20:08:49 +01:00
minijuvix.agda-lib WIP. Adapting source code from heliaxdev/juvix for parsing purposes. 2021-11-11 20:08:49 +01:00
MiniJuvix.cabal Added holes for the parser. 2021-11-22 16:23:26 +01:00
README.md [ README ] Structure 2021-11-11 20:12:32 +01:00
stack.yaml [ MiniJuvix/Parsing ] restructuring Language 2021-11-21 23:07:02 +01:00

MiniJuvix GPL-3.0-only license Haskell CI

This repository aims to be a conservative Haskell project of a tiny language with dependent types based on the Juvix project. The primary purpose is to be a laboratory to study/experiment in implementing a functional language with dependent types.

In this branch qtt, MiniJuvix aims to be programming language based on Quantitative type theory, but with the semiring of the extended natural numbers. Some Haskell code has been generated automatically by agda2hs. In the future, we want to prove properties about the Minijuvix programs directly in Agda.

The following is a tentative project structure, but it can change at any moment. See below the file project structure. The diagram shows the design of the compiler related with the project structure.

In the picture, syntax transformations are denoted by pᵢ (e.g. passes in the Juvix Translate library) and checking operations are denoted by cᵢ (e.g. found in the Juvix Core library), and both families of items are the priority of this project.

$ tree src/
...
.
├── MiniJuvix
│   ├── Desugaring
│   │   └── Error.hs
│   ├── Error.hs
│   ├── Monad.hs
│   ├── Parsing
│   │   ├── ADT.hs
│   │   ├── Error.hs
│   │   ├── Location.hs
│   │   └── Parser.hs
│   ├── Pipeline.hs
│   ├── Pretty.hs
│   ├── Syntax
│   │   ├── Core.agda
│   │   ├── Core.hs
│   │   ├── Desugared.hs
│   │   ├── Eval.agda
│   │   ├── Eval.hs
│   │   └── Sugared.hs
│   ├── Typing
│   │   ├── Coverage.hs
│   │   ├── Erasure.hs
│   │   ├── Error.hs
│   │   ├── Scopechecking.hs
│   │   ├── Termination.hs
│   │   └── Typechecking.hs
│   └── Utils
│       ├── File.hs
│       ├── Monad.hs
│       ├── NameSymbol.hs
│       ├── Parser
│       │   ├── Lexer.hs
│       │   └── Token.hs
│       ├── Parser.hs
│       ├── Prelude.hs
│       ├── Pretty.hs
│       └── Version.hs
├── app
│   ├── Main.hs
│   └── Options.hs
└── test
    └── Spec.hs
...