Skip to content

Latest commit

 

History

History
81 lines (49 loc) · 2.04 KB

README.md

File metadata and controls

81 lines (49 loc) · 2.04 KB

jr - j in rust ... eventually

j is amazing: https://www.jsoftware.com/

rust is also great: https://doc.rust-lang.org/stable/book/

How hard could it be to write our own j interpreter in rust?...

What is jr?

Jr is a rust implementation of the J programming language. It is intended to be feature compatible with the official jsoftware implementation (though not necessarily bug compatible).

It relies on the ndarray crate.

Some extremely useful j books and documentation:

Note: Arthur Whitney and Roger Hui style C (Incunabulum) is not a direct inspiration for the rust code in this project.

Why

For fun! :D

Also to get better at rust and j.

What's left to do?

CURRENT STATUS: STATUS.md

TODO:

  • Implement the rest of the primitives (see: (STATUS.md) and src/lib.rs)
  • Tests, lots more tests needed
  • Foreigns
  • Locales - partial
  • Draw the rest of the owl

Done:

  • Basic scanning and tokenizing
  • Basic verb and adverb evaluation
  • A few primitive verbs implemented for integer nouns
  • Finish src/lib.rs:eval()
  • Implement the verb rank concept
  • J compatible display of nouns

usage

cargo build --release

./target/release/jr
   1 2 3 + 4 5 6
[5, 7, 9]

Tests:

cargo test

# quick run
cargo run

# debug logs
RUST_LOG=jr=debug cargo run