Skip to main content

closure/
closure.rs

1#[allow(unused_imports)]
2use hlvm::function::{Fun, string, num, list};
3
4#[allow(dead_code, unused_variables)]
5fn main() {
6
7    let mut main = Fun::new()
8        .add_data(
9            Fun::new()
10                .store("m")
11                .add_data(
12                    Fun::new()
13                        .load("m")
14                        .mul()
15                        .as_value()
16                )
17                .as_value()
18        )
19        .store("multiply")
20
21        .add_data(num("2"))
22        .load("multiply")
23        .call_from_stack()
24        .store("double")
25
26        .add_data(num("3"))
27        .load("multiply")
28        .call_from_stack()
29        .store("triple")
30
31        .add_data(string("5 doubled is ")).print()
32        .add_data(num("5")).load("double")
33        .call_from_stack().println()
34
35        .add_data(string("7 doubled is ")).print()
36        .add_data(num("7")).load("double")
37        .call_from_stack().println()
38
39        .add_data(string("5 tripled is ")).print()
40        .add_data(num("5")).load("triple")
41        .call_from_stack().println()
42
43        .add_data(string("7 tripled is ")).print()
44        .add_data(num("7")).load("triple")
45        .call_from_stack().println();
46
47    main.run();
48}