Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/remexre/evaltrees
A simple term-rewriting interpreter that displays intermediate expressions.
https://github.com/remexre/evaltrees
education hindley-milner interpreter rust
Last synced: about 8 hours ago
JSON representation
A simple term-rewriting interpreter that displays intermediate expressions.
- Host: GitHub
- URL: https://github.com/remexre/evaltrees
- Owner: remexre
- Created: 2018-05-30T02:51:30.000Z (over 6 years ago)
- Default Branch: master
- Last Pushed: 2022-06-06T21:16:23.000Z (over 2 years ago)
- Last Synced: 2024-10-13T01:14:53.537Z (24 days ago)
- Topics: education, hindley-milner, interpreter, rust
- Language: Rust
- Size: 1.11 MB
- Stars: 14
- Watchers: 3
- Forks: 0
- Open Issues: 11
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
evaltrees
=========[![Build Status](https://travis-ci.com/remexre/evaltrees.svg?branch=master)](https://travis-ci.com/remexre/evaltrees) [![Dependency Status](https://deps.rs/repo/github/remexre/evaltrees/status.svg)](https://deps.rs/repo/github/remexre/evaltrees)
A simple functional language, and a small-step interpreter for it. Additionally, shows the evaluation of the "main expression" as it proceeds. Intended as an instructional aid for CSCI2041 at the University of Minnesota.
The interpreter can be run in call-by-name, call-by-need, or call-by-value modes. Expression evaluations can be show as concrete or abstract syntax.
See `doc/README.md` for a description of the language's syntax.
Demo
----[![asciicast](https://raw.githubusercontent.com/remexre/evaltrees/master/doc/demo.gif)](https://asciinema.org/a/186990)
Missing Features
----------------(These are features that will probably not be implemented (although PRs are welcome))
- Polymorphic Recursion
- This makes type inference undecidable
- Higher-rank Polymorphism
- This makes type inference undecidable
- The current reification procedure for types assumes rank-1 polymorphismLicense
-------Licensed under either of
- Apache License, Version 2.0, (http://www.apache.org/licenses/LICENSE-2.0\)
- MIT license (http://opensource.org/licenses/MIT\)at your option.
### Contribution
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.