GitXplorerGitXplorer
f

nohm

public
8 stars
0 forks
0 issues

Commits

List of commits on branch main.
Unverified
cdc5b32c1ead02bbdc2ed05ad80e31a24cb24e1f

Attempt to fix ci

ffritzo committed 3 years ago
Unverified
a291ec581b8960472a6452b6da8e74e6e847091d

Attempt to fix ci

ffritzo committed 3 years ago
Unverified
fbd06c93525cc44a8fe75318d39dbe3b7109b1c8

Fix most tests; mark one xfail

ffritzo committed 3 years ago
Unverified
75ab30835af96c9104ccdfadfb68a59ad15114af

Fix some parsing errors

ffritzo committed 3 years ago
Unverified
f7f1ee81b1f881a6e8280b6c282b7701bf74b587

Fix references in README.md

ffritzo committed 3 years ago
Unverified
03627e620306e50c6786a4ecc2b62684766dbbca

Add remaining MUX11 rules

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.