1
1
mirror of https://github.com/anoma/juvix.git synced 2024-11-24 00:35:43 +03:00
juvix/notes
2021-11-13 22:46:54 +01:00
..
Example.agda [ notes ] added small example code 2021-10-19 19:27:02 +02:00
README.md [ Juvix.Parser w.i.p ] fixing cabal compilation. 2021-11-13 22:46:54 +01:00

Tools used so far:

  • cabal-edit

  • hlint and checkout https://github.com/kowainik/relude/blob/main/.hlint.yaml for a complex configuration and better hints.

  • stan

  • summoner

  • ghcup

  • implicit-hie generates hie.yaml.

  • For a good prelude, I tried with Protolude, but it seems a bit abandoned, and it doesn't have support the new Haskell versions. Relude just offered the same, and it is better documented. Let us give it a shot. NoImplicitPrelude plus base-noprelude. https://kowainik.github.io/projects/relude

  • For Pretty printer, we will use the package https://hackage.haskell.org/package/prettyprinter, which supports nice annotations and colors using Ansi-terminal subpackage: cabal-edit add prettyprinter-ansi-terminal.

  • Two options for the kind of container we can use for Context. Using the package container and for performance, unordered-containers. The latter seems to have the same API naming than the former. So, in principle, it doesn't matter which we use.

  • See gluedeval. During elaboration different kind of evaluation strategies may be needed.

    • top vs. local scope.
  • On equality type-checking, see abstract

  • To document the code, see https://kowainik.github.io/posts/haddock-tips

Initial task order for Minijuvix indicated between parenthesis:

  1. Parser (3.)
  2. Typechecker (1.)
  3. Compiler (2.)
  4. Interpreter (4.)