0.2.27 • Published 3 years ago
hvm-js v0.2.27
HVM on JavaScript
HVM is now available as a JavaScript library!
Installing
npm i --save hvm-jsExamples
Evaluating a term to normal form
import hvm from "hvm-js";
// Instantiates an HVM runtime given a source code
var rt = await hvm.runtime(`
(U60.sum 0) = 0
(U60.sum n) = (+ n (U60.sum (- n 1)))
`);
console.log(rt.eval("(U60.sum 10000000)"));Evaluating to weak head normal form
import hvm from "hvm-js";
// Instantiates an HVM runtime given a source code
var rt = await hvm.runtime(`
(U60.sum 0) = 0
(U60.sum n) = (+ n (U60.sum (- n 1)))
`);
// Allocates an expression without reducing it
let loc = rt.alloc_code("(U60.sum 10)");
// Reduces it to weak head normal form:
rt.reduce(loc);
// If the result is a number, print its value:
let term = rt.at(loc);
if (rt.get_tag(term) == rt.NUM) {
console.log("Result is Num(" + rt.get_val(term) + ")");
}Running an IO program
import hvm from "hvm-js";
var rt = await hvm(`
Main =
(IO.do_output "Name: " λ_
(IO.do_input λname
(IO.do_output "Hi, " λ_
(IO.do_output name λ_
(IO.done 42)))))
`);
await rt.run_io_term({$: "Fun", name: "Main", args: []});
console.log("");0.2.27
3 years ago
0.2.26
3 years ago
0.2.25
3 years ago
0.2.24
3 years ago
0.2.23
3 years ago
0.2.21
4 years ago
0.2.20
4 years ago
0.2.19
4 years ago
0.2.18
4 years ago
0.2.17
4 years ago
0.2.16
4 years ago
0.2.15
4 years ago
0.2.14
4 years ago
0.2.13
4 years ago
0.2.12
4 years ago
0.2.11
4 years ago
0.2.10
4 years ago
0.2.9
4 years ago
0.2.8
4 years ago
0.2.7
4 years ago
0.2.6
4 years ago
0.2.5
4 years ago
0.2.4
4 years ago
0.2.3
4 years ago
0.2.2
4 years ago
0.2.1
4 years ago
0.2.0
4 years ago
0.1.4
4 years ago
0.1.3
4 years ago
0.1.2
4 years ago
0.1.1
4 years ago
0.1.75
4 years ago
0.1.74
4 years ago