Skip to content

holoed/JuniorNative

Repository files navigation

Junior Native Haskell CI Actions Status Docker Actions Status

  • ✅ Parse
  • ✅ Type Inference
  • ✅ Transform TypeClasses to dictionaries
  • ✅ Closure Conversion
  • ✅ ANF Translation
  • ✅ JS Code Gen
  • 🔲 Native Code Gen TODO

Introducing Junior, the new functional programming language that brings the powerful type system of Haskell and the expressive syntax of ML to the JavaScript ecosystem!

Junior is a statically-typed, functional programming language that is designed to be easy to learn and use, while also providing strong guarantees around the correctness and safety of your code. It leverages the type system of Haskell to catch errors early and ensure that your code is well-structured and maintainable, while also using the familiar and concise syntax of ML to make it easy to read and write.

Some key features of Junior include:

  • Strong, static typing: Junior has a powerful type system that allows you to specify the structure and behavior of your code with precision and clarity. This helps to catch errors and bugs early in the development process, and ensures that your code is easy to read and maintain.

  • ML-style syntax: Junior uses an ML-inspired syntax that is concise and easy to read, making it a natural choice for functional programmers. It also has a familiar look and feel that will be familiar to developers who have used languages like OCaml or SML.

  • Compiles to JavaScript: Junior is designed to be compiled to JavaScript, which means that you can use it to build web applications and run them in any modern web browser. This also makes it easy to integrate with existing JavaScript libraries and frameworks.

  • Concurrency and parallelism: Junior has built-in support for concurrent and parallel programming, allowing you to easily write programs that can take advantage of multiple CPU cores and perform tasks in parallel.

  • Overall, Junior is a powerful and expressive functional programming language that brings the best features of Haskell and ML to the JavaScript ecosystem. It is easy to learn and use, while also providing strong guarantees around the correctness and safety of your code.

Examples:

image

image

image