Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/fritzo/nohm
Nondeterministic Optimal Higher-order Machine
https://github.com/fritzo/nohm
Last synced: 24 days ago
JSON representation
Nondeterministic Optimal Higher-order Machine
- Host: GitHub
- URL: https://github.com/fritzo/nohm
- Owner: fritzo
- License: apache-2.0
- Created: 2022-03-04T18:58:56.000Z (over 2 years ago)
- Default Branch: main
- Last Pushed: 2022-03-12T17:58:50.000Z (over 2 years ago)
- Last Synced: 2024-10-04T18:19:21.050Z (about 1 month ago)
- Language: Python
- Size: 106 KB
- Stars: 8
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
[![Build Status](https://github.com/fritzo/nohm/workflows/CI/badge.svg)](https://github.com/fritzo/nohm/actions)
![Maturity](https://img.shields.io/badge/maturity-prototype-red)# NOHM: Nondeterministic Optimal Higher-order Machine
This is a research implementation of optimal beta reduction
([Asperti98](#Asperti98)), combining implementation ideas of
[BOHM](https://github.com/asperti/BOHM1.1) ([Asperti96](#Asperti96)) with
engineering tricks of [HVM](https://github.com/Kindelia/HVM)
([Taelin22](#Taelin22)).The target language is pure untyped nondeterministic λ-calculus
([Barendregt84](#Barendregt84)), that is the language with function abstraction,
function application, bound variables, and nondeterministic parallel binary
choice.
This machine aims to implement types as closures ([Scott76](#Scott76))
(increasing idempotent functions) together with a rich type system of closures
([Obermeyer09](#Obermeyer09)).
It remains to be seen whether this is feasible.The engineering plan is to create a readable and easily debuggable Python
runtime together with an equivalent but highly-optimized C runtime, similar to
HVM's hybrid Rust+C architecture ([Taelin22](#Taelin22)).
This architecture allows unit tests to be written in Python.## References
- Asperti96
-
Andrea Asperti, Cecilia Giovanetti, Andrea Naletto (1996)
"The Bologna Optimal Higher-order Machine"
(doi |
code)
- Asperti98
-
Andrea Asperti, Stefano Guerrini (1998)
"The optimal implementation of functional programming languages"
(doi)
- Barendregt84
-
Hendrik Barendregt (1984)
"The lambda calculus: its syntax and semantics" - Obermeyer09
-
Fritz Obermeyer (2009)
"Automated equational reasoning in nondeterministic λ-calculi modulo theories H*"
(pdf |
old code |
new code)
- Salikhmetov17
-
Anton Salikhmetov (2017)
"inet-lib: JavaScript Engine for Interaction Nets"
(code |
paper)
- Scott76
-
Dana Scott (1976)
"Datatypes as Lattices"
(doi |
pdf)
- Taelin22
-
Victor Taelin et al. (2022)
"Higher-order Virtual Machine (HVM)"
(code |
docs)
## License
Copyright (c) 2022 Fritz Obermeyer.
NOHM is licensed under the [Apache 2.0 License](/LICENSE).