Skip to content

hexaredecimal/ML

Repository files navigation

Small ML language (SMLL)

larry the smll mascott

A small, experimental, general purpose programming language created for exploring alternative ways of writing applications on the JVM

example workflow

Hits

What is needed to run this?

The latest JAVA compiler (with support for java 21 source input)

A rust compiler

using MLIo::Io

fun main(): Unit => println("Hello, world")

How to compile?

After downloading and installing the required software, execute the following commands

$ git clone depth=1 https://github.com/hexaredecimal/ML.git
$ cd ML
$ cargo build

After running these commands you should now have a target folder on the root of the project, then execute the following

$ ./target/debug/smll init  # Initialize a new project in the current directory and creates a `project.toml` and a directory named code

edit the newly created project.toml and add the following under [depends]

MlIo = "0.0.1"

save and return to your terminal.

$ ./target/debug/smll build # Builds the dependencies and the projects main file
$ ./target/debug/smll run   # Run the main program file

Todo:

  • Package manager
  • Add command for adding new dependencies
  • Clean command for cleaning the project. (This should cause a full rebuild)
  • Use project version/author info when downloading dependencies
  • Package registry here

Features:

  • Type inference for variables
  • Variant enums
  • structs
  • Expressions not Statements

Inspiration:

SMLL is a ml derived language for the JVM which borrows a lot of concepts from languages such as Standard ML, Rust and Kotlin.

Stargazers

Star History Chart