2021-09-26 20:06:22 +03:00
|
|
|
MiniJuvix <!-- [![GitHub CI](https://github.com/heliaxdev/MiniJuvix/workflows/CI/badge.svg)](https://github.com/heliaxdev/MiniJuvix/actions) -->
|
2021-09-26 19:59:51 +03:00
|
|
|
[![GPL-3.0-only license](https://img.shields.io/badge/license-GPL--3.0--only-blue.svg)](LICENSE)
|
2021-09-26 20:06:22 +03:00
|
|
|
=========
|
2021-09-26 19:59:51 +03:00
|
|
|
|
|
|
|
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
|
2021-09-26 20:06:22 +03:00
|
|
|
functional language with dependent types.
|
2021-09-26 19:59:51 +03:00
|
|
|
|
|
|
|
The following is a tentative project structure, but it can change at
|
2021-09-26 20:06:22 +03:00
|
|
|
any moment. The diagram shows the design of the compiler related with
|
|
|
|
the project structure. In the picture, syntax
|
|
|
|
transformations are denoted by p_i (e.g. passes in the Juvix Translate library)
|
|
|
|
and checking operations are denoted by c_i (e.g. found in the Juvix Core library),
|
|
|
|
and both families of items are the priority of this project.
|
|
|
|
|
|
|
|
<img align="right" height="350" src="doc/minijuvix.png">
|
2021-09-26 19:59:51 +03:00
|
|
|
|
|
|
|
```bash
|
|
|
|
$ tree src
|
|
|
|
...
|
|
|
|
├── src
|
|
|
|
│ ├── app
|
|
|
|
│ │ ├── Main.hs
|
|
|
|
│ │ └── Options.hs
|
|
|
|
│ ├── MiniJuvix
|
|
|
|
│ │ ├── Pipeline.hs
|
|
|
|
│ │ ├── Parser
|
|
|
|
│ │ ├── Syntax
|
|
|
|
│ │ │ ├── Sugared.hs
|
|
|
|
│ │ │ ├── Desugared.hs
|
|
|
|
│ │ │ ├── Core.hs
|
|
|
|
│ │ │ └── Eval.hs
|
|
|
|
│ │ ├── Typing
|
|
|
|
│ │ │ ├── Scopechecking.hs
|
|
|
|
│ │ │ ├── Coverage.hs
|
|
|
|
│ │ │ ├── Typechecking.hs
|
|
|
|
│ │ │ ├── Termination.hs
|
|
|
|
│ │ │ └── Erasure.hs
|
|
|
|
│ │ └── Utils
|
|
|
|
│ │ ├── Parsing.hs
|
|
|
|
│ │ ├── Pretty.hs
|
|
|
|
│ │ ├── File.hs
|
|
|
|
│ │ └── Version.hs
|
|
|
|
│ └── test
|
|
|
|
│ └── Spec.hs
|
|
|
|
...
|
|
|
|
```
|
|
|
|
|
|
|
|
|