Makes working with the SMLNJ interpreter a little bit more enjoyable by offering auto reloads, completions and history
  • Rust 96.7%
  • Standard ML 3.3%
Find a file
Nejc Mikelj d51c64d874 on ctrl+q, a few interrupt commands are injected in case the user pastes
or enters a command while a long running command is being evaluated.
2026-10-25 16:15:30 +01:00
src on ctrl+q, a few interrupt commands are injected in case the user pastes 2026-10-25 16:15:30 +01:00
.gitignore added injection markers so we can selectively skip injected commands 2026-10-13 00:54:22 +02:00
Cargo.lock make sure that 'rlwrap' and 'sml' are installed, added destructive 2026-10-14 22:02:23 +02:00
Cargo.toml make sure that 'rlwrap' and 'sml' are installed, added destructive 2026-10-14 22:02:23 +02:00
main.sml added ability to modify prompts, print limits get increased when prompt starts 2026-10-22 22:43:58 +02:00
README.md updated readme.md 2026-10-14 22:18:01 +02:00
sources.cm first commit 2026-10-13 00:31:08 +02:00

smli

A simple program for hot-reloading sml definitions in the running repl instance without "use '..'" or reloading the instance by killing and starting it up again.

Installation

git clone https://git.purplebear.io/purplebear/smli-rs
cargo install --path .

Usage

smli <sml_file>

Reload

You can reload the entire repl instance by pressing CTRL+C. This will replace the current repl instance with a new one, effectively purging all definitions except the ones from the source file <sml_file>. This is effectively the same as killing the instance with CTRL+D and then running it again.

The other type of reload only reloads the source file definitions which happens automatically anytime the <sml_file> is saved.