2024-01-22 10:26:33 -07:00
2023-12-20 15:41:41 -07:00
2024-01-15 07:44:17 -07:00
2023-12-14 13:29:08 -07:00
2024-01-22 10:26:33 -07:00
2024-01-15 07:47:23 -07:00
2023-12-04 19:52:35 -07:00
2024-01-17 10:11:48 -07:00
2023-12-14 14:27:16 -07:00

rl'

rlp (ruelang') will be a lazily-evaluated purely-functional language heavily imitating Haskell.

Build Info

  • rlp is built using Cabal
  • rlp's documentation is built using Sphinx
$ cabal build       # Build the rlpc compiler
$ cabal install     # Install rlpc to $PATH
$ cabal haddock     # Build the API docs w/ Haddock
$ make -C doc html  # Build the primary docs w/ Sphinx

# run the test suite
$ cabal test --test-show-details=direct

Use

# Compile and evaluate examples/factorial.hs, with evaluation info dumped to stderr
$ rlpc -ddump-eval examples/factorial.hs
# Compile and evaluate t.hs, with evaluation info dumped to t.log
$ rlpc -ddump-eval -l t.log t.hs
# Print the raw structure describing the compiler options and die
# (option parsing still must succeed in order to print)
$ rlpc -ddump-opts t.hs

Potential Features

Listed in order of importance.

  • ADTs
  • First-class functions
  • Higher-kinded types
  • Typeclasses
  • Parametric polymorphism
  • Hindley-Milner type inference
  • Newtype coercion
  • Parallelism

Milestones

(This list is incomplete.)

  • Backend
    • Core language
      • AST
    • Low-level execution model (TI)
      • Arithmetic
      • Conditionals
      • Structured data
      • Garbage collection
    • Low-level execution model (GM)
      • Arithmetic
      • Conditionals
      • Structured data
      • Garbage Collection
    • Emitter
      • Code-gen (target yet to be decided)
      • Core language emitter
    • Core linter (Type-checker)
    • Core2Core pass
      • GM prep
        • Non-strict case-floating
      • Let-floating
      • TCO
      • DCE
  • Frontend
    • High-level language
      • AST
      • Lexer
      • Parser
    • Translation to the core language
      • Constraint solver
      • do-notation
    • CLI
  • Documentation
    • State transition rules
    • How does the evaluation model work?
    • CLI usage
    • Tail call optimisation
    • Parsing rlp
  • Tests
    • Generic example programs
    • Parser

December Release Plan

  • Tests
    • Core lexer
    • Core parser
    • Evaluation model
  • Benchmarks
  • Stable Core lexer
  • Stable Core parser
  • Stable evaluation model
    • Garbage Collection
  • Stable documentation for the evaluation model
Description
No description provided
Readme 2.5 MiB
Latest
2024-02-16 14:20:14 -07:00
Languages
Haskell 83.8%
Yacc 10.7%
Logos 5.5%