GitXplorerGitXplorer
f

nohm

public
8 stars
0 forks
0 issues

Commits

List of commits on branch main.
Unverified
1543b158093d4b8cb572936d6a2344e81f85dc15

Fix file cleanup

ffritzo committed 3 years ago
Unverified
8ae130d7e0675f646998e7465867e587a0af46b7

Support IMPORT statements

ffritzo committed 3 years ago
Unverified
297582166dba1d34f6792b52df437d21cd7bdfa2

Tidy up, rename level -> rank

ffritzo committed 3 years ago
Unverified
97c5807faf13773b71fa527961ddd8ee53ef4929

Make first pass at level tracking (still incorrect)

ffritzo committed 3 years ago
Unverified
b328b5013c35572e9c321757405524fe3491be90

Add .is_safe attribute guarding collection and simplification

ffritzo committed 3 years ago
Unverified
e3ee7a605f12747d6d9bcec7377d6e7f128809c6

Attempt to fix ci

ffritzo committed 3 years ago

README

The README file for this repository.

Build Status Maturity

NOHM: Nondeterministic Optimal Higher-order Machine

This is a research implementation of optimal beta reduction (Asperti98), combining implementation ideas of BOHM (Asperti96) with engineering tricks of HVM (Taelin22).

The target language is pure untyped nondeterministic λ-calculus (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) (increasing idempotent functions) together with a rich type system of closures (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). 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.