Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[sc-543] Add hvml test on example programs #261

Merged
merged 3 commits into from
Apr 10, 2024
Merged
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 18 additions & 0 deletions examples/all_tree.hvm
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
data Bool = True | False

data Tree
= (Node lft rgt)
| (Leaf val)

and True True = True
and _ _ = False

all (Node lft rgt) = (and (all lft) (all rgt))
all (Leaf val) = val

main = (all (gen 8))

gen = λn switch n {
0: (Leaf True)
_: let tree = (gen n-1); (Node tree tree)
}
18 changes: 18 additions & 0 deletions examples/alloc_small_tree.hvm
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
T = λt λf t
F = λt λf f
And = λpλq (p q F)

Z = λs λz (z)
S = λn λs λz (s n)

Add = λa λb (a (S b))
Mul = λa λb λf (a (b f))
Pow = λa λb (a (Mul b) (S Z))

Node = λa λb λn λl (n a b)
Leaf = λn λl l

Alloc = λn (n (λp (Node (Alloc p) (Alloc p))) Leaf)
Destroy = λt (t (λaλb (And (Destroy a) (Destroy b))) T)

Main = (Destroy (Alloc (Pow (S (S Z)) (S (S (S (S Z)))))))
11 changes: 6 additions & 5 deletions examples/example.hvm
Original file line number Diff line number Diff line change
Expand Up @@ -19,8 +19,8 @@

// You can use 'switch' to pattern match native numbers
// The `_` arm binds the `scrutinee`-1 variable to the the value of the number -1
(Num.pred) = λn
switch n {
(Num.pred) = λn
switch n {
0: 0
_: n-1
}
Expand Down Expand Up @@ -52,8 +52,9 @@ data Boxed = (Box val)
(Box.map (Box val) f) = (Box (f val))

(Box.unbox) = λbox
let (Box val) = box
val
match box {
Box: box.val
}

// Use tuples to store two values together without needing to create a new data type
(Tuple.new fst snd) =
Expand All @@ -71,7 +72,7 @@ data Boxed = (Box val)
// You can execute a program in HVM with "cargo run -- --run <path to file>"
// Other options are "--check" (the default mode) to just see if the file is well formed
// and "--compile" to output hvm-core code.
(main) =
(main) =
let tup = (Tuple.new None (Num.pred 5))

let fst = (Tuple.fst tup)
Expand Down
11 changes: 11 additions & 0 deletions examples/fib.hvm
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
add = λa λb (+ a b)

fib = λx switch x {
0: 1
_: let p = x-1; switch p {
0: 1
_: (+ (fib p) (fib p-1))
}
}

main = (fib 30)
17 changes: 17 additions & 0 deletions examples/gen_tree_kind2.hvm
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
_Char = 0
_List = λ_T 0
_List.cons = λ_head λ_tail λ_P λ_cons λ_nil ((_cons _head) _tail)
_List.nil = λ_P λ_cons λ_nil _nil
_Nat = 0
_Nat.succ = λ_n λ_P λ_succ λ_zero (_succ _n)
_Nat.zero = λ_P λ_succ λ_zero _zero
_String = (_List _Char)
_String.cons = λ_head λ_tail λ_P λ_cons λ_nil ((_cons _head) _tail)
_String.nil = λ_P λ_cons λ_nil _nil
_Tree = λ_A 0
_Tree.gen = λ_n λ_x switch _n = _n { 0: _Tree.leaf _: let _n-1 = _n-1 (((_Tree.node _x) ((_Tree.gen _n-1) (+ (* _x 2) 1))) ((_Tree.gen _n-1) (+ (* _x 2) 2))) }
_Tree.leaf = λ_P λ_node λ_leaf _leaf
_Tree.node = λ_val λ_lft λ_rgt λ_P λ_node λ_leaf (((_node _val) _lft) _rgt)
_main = ((_Tree.gen 8) 2)

main = _main
24 changes: 24 additions & 0 deletions examples/neg_fusion.hvm
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
// size = 1 << 8

Mul = λn λm λs (n (m s))

// Church nat
C2 = λf λx (f (f x))

// Church powers of two
P2 = (Mul C2 C2) // 4
P3 = (Mul C2 P2) // 8
P4 = (Mul C2 P3) // 16
P5 = (Mul C2 P4) // 32
P6 = (Mul C2 P5) // 64
P7 = (Mul C2 P6) // 128
P8 = (Mul C2 P7) // 256

// Booleans
True = λt λf t
False = λt λf f
Not = λb ((b False) True)
Neg = λb λt λf (b f t)

// Negates 'true' 256 times: 'neg' is faster than 'not' because it fuses
Main = (P8 Neg True)
33 changes: 33 additions & 0 deletions tests/golden_tests.rs
Original file line number Diff line number Diff line change
Expand Up @@ -418,3 +418,36 @@ fn io() {
}),
])
}

#[test]
fn examples() -> Result<(), Diagnostics> {
let examples_path = PathBuf::from(env!("CARGO_MANIFEST_DIR")).join("examples");

for entry in WalkDir::new(examples_path)
.min_depth(1)
.into_iter()
.filter_map(|e| e.ok())
.filter(|e| e.path().extension().map_or(false, |ext| ext == "hvm"))
{
let path = entry.path();
eprintln!("Testing {}", path.display());
let code = std::fs::read_to_string(path).map_err(|e| e.to_string())?;

let book = do_parse_book(&code, path).unwrap();
let mut compile_opts = CompileOpts::default_strict();
compile_opts.linearize_matches = hvml::OptLevel::Extra;
let diagnostics_cfg = DiagnosticsConfig::default_strict();
let (res, _) = run_book(book, None, RunOpts::default(), compile_opts, diagnostics_cfg, None)?;

let mut settings = insta::Settings::clone_current();
settings.set_prepend_module_to_snapshot(false);
settings.set_omit_expression(true);
settings.set_input_file(path);

settings.bind(|| {
assert_snapshot!(format!("examples__{}", path.file_name().unwrap().to_str().unwrap()), res);
});
}

Ok(())
}
18 changes: 18 additions & 0 deletions tests/golden_tests/examples/all_tree.hvm
imaqtkatt marked this conversation as resolved.
Show resolved Hide resolved
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
data Bool = True | False

data Tree
= (Node lft rgt)
| (Leaf val)

and True True = True
and _ _ = False

all (Node lft rgt) = (and (all lft) (all rgt))
all (Leaf val) = val

main = (all (gen 8))

gen = λn switch n {
0: (Leaf True)
_: let tree = (gen n-1); (Node tree tree)
}
18 changes: 18 additions & 0 deletions tests/golden_tests/examples/alloc_small_tree.hvm
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
T = λt λf t
F = λt λf f
And = λpλq (p q F)

Z = λs λz (z)
S = λn λs λz (s n)

Add = λa λb (a (S b))
Mul = λa λb λf (a (b f))
Pow = λa λb (a (Mul b) (S Z))

Node = λa λb λn λl (n a b)
Leaf = λn λl l

Alloc = λn (n (λp (Node (Alloc p) (Alloc p))) Leaf)
Destroy = λt (t (λaλb (And (Destroy a) (Destroy b))) T)

Main = (Destroy (Alloc (Pow (S (S Z)) (S (S (S (S Z)))))))
11 changes: 11 additions & 0 deletions tests/golden_tests/examples/fib.hvm
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
add = λa λb (+ a b)

fib = λx switch x {
0: 1
_: let p = x-1; switch p {
0: 1
_: (+ (fib p) (fib p-1))
}
}

main = (fib 30)
17 changes: 17 additions & 0 deletions tests/golden_tests/examples/gen_tree_kind2.hvm
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
_Char = 0
_List = λ_T 0
_List.cons = λ_head λ_tail λ_P λ_cons λ_nil ((_cons _head) _tail)
_List.nil = λ_P λ_cons λ_nil _nil
_Nat = 0
_Nat.succ = λ_n λ_P λ_succ λ_zero (_succ _n)
_Nat.zero = λ_P λ_succ λ_zero _zero
_String = (_List _Char)
_String.cons = λ_head λ_tail λ_P λ_cons λ_nil ((_cons _head) _tail)
_String.nil = λ_P λ_cons λ_nil _nil
_Tree = λ_A 0
_Tree.gen = λ_n λ_x switch _n = _n { 0: _Tree.leaf _: let _n-1 = _n-1 (((_Tree.node _x) ((_Tree.gen _n-1) (+ (* _x 2) 1))) ((_Tree.gen _n-1) (+ (* _x 2) 2))) }
_Tree.leaf = λ_P λ_node λ_leaf _leaf
_Tree.node = λ_val λ_lft λ_rgt λ_P λ_node λ_leaf (((_node _val) _lft) _rgt)
_main = ((_Tree.gen 8) 2)

main = _main
24 changes: 24 additions & 0 deletions tests/golden_tests/examples/neg_fusion.hvm
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
// size = 1 << 8

Mul = λn λm λs (n (m s))

// Church nat
C2 = λf λx (f (f x))

// Church powers of two
P2 = (Mul C2 C2) // 4
P3 = (Mul C2 P2) // 8
P4 = (Mul C2 P3) // 16
P5 = (Mul C2 P4) // 32
P6 = (Mul C2 P5) // 64
P7 = (Mul C2 P6) // 128
P8 = (Mul C2 P7) // 256

// Booleans
True = λt λf t
False = λt λf f
Not = λb ((b False) True)
Neg = λb λt λf (b f t)

// Negates 'true' 256 times: 'neg' is faster than 'not' because it fuses
Main = (P8 Neg True)
5 changes: 5 additions & 0 deletions tests/snapshots/examples__all_tree.hvm.snap
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
source: tests/golden_tests.rs
input_file: tests/golden_tests/examples/all_tree.hvm
---
True
5 changes: 5 additions & 0 deletions tests/snapshots/examples__alloc_small_tree.hvm.snap
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
source: tests/golden_tests.rs
input_file: tests/golden_tests/examples/alloc_small_tree.hvm
---
λa λ* a
5 changes: 5 additions & 0 deletions tests/snapshots/examples__callcc.hvm.snap
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
source: tests/golden_tests.rs
input_file: examples/callcc.hvm
---
52
5 changes: 5 additions & 0 deletions tests/snapshots/examples__example.hvm.snap
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
source: tests/golden_tests.rs
input_file: examples/example.hvm
---
8
5 changes: 5 additions & 0 deletions tests/snapshots/examples__fib.hvm.snap
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
source: tests/golden_tests.rs
input_file: tests/golden_tests/examples/fib.hvm
---
1346269
5 changes: 5 additions & 0 deletions tests/snapshots/examples__fusing_add.hvm.snap
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
source: tests/golden_tests.rs
input_file: examples/fusing_add.hvm
---
λa λb λ* (b λc λ* (c a))
5 changes: 5 additions & 0 deletions tests/snapshots/examples__fusing_not.hvm.snap
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
source: tests/golden_tests.rs
input_file: examples/fusing_not.hvm
---
λa λb λc (a b c)
5 changes: 5 additions & 0 deletions tests/snapshots/examples__gen_tree_kind2.hvm.snap
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
source: tests/golden_tests.rs
input_file: tests/golden_tests/examples/gen_tree_kind2.hvm
---
λ* λa λ* (a 2 λ* λb λ* (b 5 λ* λc λ* (c 11 λ* λd λ* (d 23 λ* λe λ* (e 47 λ* λf λ* (f 95 λ* λg λ* (g 191 λ* λh λ* (h 383 λ* λ* λi i λ* λ* λj j) λ* λk λ* (k 384 λ* λ* λl l λ* λ* λm m)) λ* λn λ* (n 192 λ* λo λ* (o 385 λ* λ* λp p λ* λ* λq q) λ* λr λ* (r 386 λ* λ* λs s λ* λ* λt t))) λ* λu λ* (u 96 λ* λv λ* (v 193 λ* λw λ* (w 387 λ* λ* λx x λ* λ* λy y) λ* λz λ* (z 388 λ* λ* λab ab λ* λ* λbb bb)) λ* λcb λ* (cb 194 λ* λdb λ* (db 389 λ* λ* λeb eb λ* λ* λfb fb) λ* λgb λ* (gb 390 λ* λ* λhb hb λ* λ* λib ib)))) λ* λjb λ* (jb 48 λ* λkb λ* (kb 97 λ* λlb λ* (lb 195 λ* λmb λ* (mb 391 λ* λ* λnb nb λ* λ* λob ob) λ* λpb λ* (pb 392 λ* λ* λqb qb λ* λ* λrb rb)) λ* λsb λ* (sb 196 λ* λtb λ* (tb 393 λ* λ* λub ub λ* λ* λvb vb) λ* λwb λ* (wb 394 λ* λ* λxb xb λ* λ* λyb yb))) λ* λzb λ* (zb 98 λ* λac λ* (ac 197 λ* λbc λ* (bc 395 λ* λ* λcc cc λ* λ* λdc dc) λ* λec λ* (ec 396 λ* λ* λfc fc λ* λ* λgc gc)) λ* λhc λ* (hc 198 λ* λic λ* (ic 397 λ* λ* λjc jc λ* λ* λkc kc) λ* λlc λ* (lc 398 λ* λ* λmc mc λ* λ* λnc nc))))) λ* λoc λ* (oc 24 λ* λpc λ* (pc 49 λ* λqc λ* (qc 99 λ* λrc λ* (rc 199 λ* λsc λ* (sc 399 λ* λ* λtc tc λ* λ* λuc uc) λ* λvc λ* (vc 400 λ* λ* λwc wc λ* λ* λxc xc)) λ* λyc λ* (yc 200 λ* λzc λ* (zc 401 λ* λ* λad ad λ* λ* λbd bd) λ* λcd λ* (cd 402 λ* λ* λdd dd λ* λ* λed ed))) λ* λfd λ* (fd 100 λ* λgd λ* (gd 201 λ* λhd λ* (hd 403 λ* λ* λid id λ* λ* λjd jd) λ* λkd λ* (kd 404 λ* λ* λld ld λ* λ* λmd md)) λ* λnd λ* (nd 202 λ* λod λ* (od 405 λ* λ* λpd pd λ* λ* λqd qd) λ* λrd λ* (rd 406 λ* λ* λsd sd λ* λ* λtd td)))) λ* λud λ* (ud 50 λ* λvd λ* (vd 101 λ* λwd λ* (wd 203 λ* λxd λ* (xd 407 λ* λ* λyd yd λ* λ* λzd zd) λ* λae λ* (ae 408 λ* λ* λbe be λ* λ* λce ce)) λ* λde λ* (de 204 λ* λee λ* (ee 409 λ* λ* λfe fe λ* λ* λge ge) λ* λhe λ* (he 410 λ* λ* λie ie λ* λ* λje je))) λ* λke λ* (ke 102 λ* λle λ* (le 205 λ* λme λ* (me 411 λ* λ* λne ne λ* λ* λoe oe) λ* λpe λ* (pe 412 λ* λ* λqe qe λ* λ* λre re)) λ* λse λ* (se 206 λ* λte λ* (te 413 λ* λ* λue ue λ* λ* λve ve) λ* λwe λ* (we 414 λ* λ* λxe xe λ* λ* λye ye)))))) λ* λze λ* (ze 12 λ* λaf λ* (af 25 λ* λbf λ* (bf 51 λ* λcf λ* (cf 103 λ* λdf λ* (df 207 λ* λef λ* (ef 415 λ* λ* λff ff λ* λ* λgf gf) λ* λhf λ* (hf 416 λ* λ* λif if λ* λ* λjf jf)) λ* λkf λ* (kf 208 λ* λlf λ* (lf 417 λ* λ* λmf mf λ* λ* λnf nf) λ* λof λ* (of 418 λ* λ* λpf pf λ* λ* λqf qf))) λ* λrf λ* (rf 104 λ* λsf λ* (sf 209 λ* λtf λ* (tf 419 λ* λ* λuf uf λ* λ* λvf vf) λ* λwf λ* (wf 420 λ* λ* λxf xf λ* λ* λyf yf)) λ* λzf λ* (zf 210 λ* λag λ* (ag 421 λ* λ* λbg bg λ* λ* λcg cg) λ* λdg λ* (dg 422 λ* λ* λeg eg λ* λ* λfg fg)))) λ* λgg λ* (gg 52 λ* λhg λ* (hg 105 λ* λig λ* (ig 211 λ* λjg λ* (jg 423 λ* λ* λkg kg λ* λ* λlg lg) λ* λmg λ* (mg 424 λ* λ* λng ng λ* λ* λog og)) λ* λpg λ* (pg 212 λ* λqg λ* (qg 425 λ* λ* λrg rg λ* λ* λsg sg) λ* λtg λ* (tg 426 λ* λ* λug ug λ* λ* λvg vg))) λ* λwg λ* (wg 106 λ* λxg λ* (xg 213 λ* λyg λ* (yg 427 λ* λ* λzg zg λ* λ* λah ah) λ* λbh λ* (bh 428 λ* λ* λch ch λ* λ* λdh dh)) λ* λeh λ* (eh 214 λ* λfh λ* (fh 429 λ* λ* λgh gh λ* λ* λhh hh) λ* λih λ* (ih 430 λ* λ* λjh jh λ* λ* λkh kh))))) λ* λlh λ* (lh 26 λ* λmh λ* (mh 53 λ* λnh λ* (nh 107 λ* λoh λ* (oh 215 λ* λph λ* (ph 431 λ* λ* λqh qh λ* λ* λrh rh) λ* λsh λ* (sh 432 λ* λ* λth th λ* λ* λuh uh)) λ* λvh λ* (vh 216 λ* λwh λ* (wh 433 λ* λ* λxh xh λ* λ* λyh yh) λ* λzh λ* (zh 434 λ* λ* λai ai λ* λ* λbi bi))) λ* λci λ* (ci 108 λ* λdi λ* (di 217 λ* λei λ* (ei 435 λ* λ* λfi fi λ* λ* λgi gi) λ* λhi λ* (hi 436 λ* λ* λii ii λ* λ* λji ji)) λ* λki λ* (ki 218 λ* λli λ* (li 437 λ* λ* λmi mi λ* λ* λni ni) λ* λoi λ* (oi 438 λ* λ* λpi pi λ* λ* λqi qi)))) λ* λri λ* (ri 54 λ* λsi λ* (si 109 λ* λti λ* (ti 219 λ* λui λ* (ui 439 λ* λ* λvi vi λ* λ* λwi wi) λ* λxi λ* (xi 440 λ* λ* λyi yi λ* λ* λzi zi)) λ* λaj λ* (aj 220 λ* λbj λ* (bj 441 λ* λ* λcj cj λ* λ* λdj dj) λ* λej λ* (ej 442 λ* λ* λfj fj λ* λ* λgj gj))) λ* λhj λ* (hj 110 λ* λij λ* (ij 221 λ* λjj λ* (jj 443 λ* λ* λkj kj λ* λ* λlj lj) λ* λmj λ* (mj 444 λ* λ* λnj nj λ* λ* λoj oj)) λ* λpj λ* (pj 222 λ* λqj λ* (qj 445 λ* λ* λrj rj λ* λ* λsj sj) λ* λtj λ* (tj 446 λ* λ* λuj uj λ* λ* λvj vj))))))) λ* λwj λ* (wj 6 λ* λxj λ* (xj 13 λ* λyj λ* (yj 27 λ* λzj λ* (zj 55 λ* λak λ* (ak 111 λ* λbk λ* (bk 223 λ* λck λ* (ck 447 λ* λ* λdk dk λ* λ* λek ek) λ* λfk λ* (fk 448 λ* λ* λgk gk λ* λ* λhk hk)) λ* λik λ* (ik 224 λ* λjk λ* (jk 449 λ* λ* λkk kk λ* λ* λlk lk) λ* λmk λ* (mk 450 λ* λ* λnk nk λ* λ* λok ok))) λ* λpk λ* (pk 112 λ* λqk λ* (qk 225 λ* λrk λ* (rk 451 λ* λ* λsk sk λ* λ* λtk tk) λ* λuk λ* (uk 452 λ* λ* λvk vk λ* λ* λwk wk)) λ* λxk λ* (xk 226 λ* λyk λ* (yk 453 λ* λ* λzk zk λ* λ* λal al) λ* λbl λ* (bl 454 λ* λ* λcl cl λ* λ* λdl dl)))) λ* λel λ* (el 56 λ* λfl λ* (fl 113 λ* λgl λ* (gl 227 λ* λhl λ* (hl 455 λ* λ* λil il λ* λ* λjl jl) λ* λkl λ* (kl 456 λ* λ* λll ll λ* λ* λml ml)) λ* λnl λ* (nl 228 λ* λol λ* (ol 457 λ* λ* λpl pl λ* λ* λql ql) λ* λrl λ* (rl 458 λ* λ* λsl sl λ* λ* λtl tl))) λ* λul λ* (ul 114 λ* λvl λ* (vl 229 λ* λwl λ* (wl 459 λ* λ* λxl xl λ* λ* λyl yl) λ* λzl λ* (zl 460 λ* λ* λam am λ* λ* λbm bm)) λ* λcm λ* (cm 230 λ* λdm λ* (dm 461 λ* λ* λem em λ* λ* λfm fm) λ* λgm λ* (gm 462 λ* λ* λhm hm λ* λ* λim im))))) λ* λjm λ* (jm 28 λ* λkm λ* (km 57 λ* λlm λ* (lm 115 λ* λmm λ* (mm 231 λ* λnm λ* (nm 463 λ* λ* λom om λ* λ* λpm pm) λ* λqm λ* (qm 464 λ* λ* λrm rm λ* λ* λsm sm)) λ* λtm λ* (tm 232 λ* λum λ* (um 465 λ* λ* λvm vm λ* λ* λwm wm) λ* λxm λ* (xm 466 λ* λ* λym ym λ* λ* λzm zm))) λ* λan λ* (an 116 λ* λbn λ* (bn 233 λ* λcn λ* (cn 467 λ* λ* λdn dn λ* λ* λen en) λ* λfn λ* (fn 468 λ* λ* λgn gn λ* λ* λhn hn)) λ* λin λ* (in 234 λ* λjn λ* (jn 469 λ* λ* λkn kn λ* λ* λln ln) λ* λmn λ* (mn 470 λ* λ* λnn nn λ* λ* λon on)))) λ* λpn λ* (pn 58 λ* λqn λ* (qn 117 λ* λrn λ* (rn 235 λ* λsn λ* (sn 471 λ* λ* λtn tn λ* λ* λun un) λ* λvn λ* (vn 472 λ* λ* λwn wn λ* λ* λxn xn)) λ* λyn λ* (yn 236 λ* λzn λ* (zn 473 λ* λ* λao ao λ* λ* λbo bo) λ* λco λ* (co 474 λ* λ* λdo do λ* λ* λeo eo))) λ* λfo λ* (fo 118 λ* λgo λ* (go 237 λ* λho λ* (ho 475 λ* λ* λio io λ* λ* λjo jo) λ* λko λ* (ko 476 λ* λ* λlo lo λ* λ* λmo mo)) λ* λno λ* (no 238 λ* λoo λ* (oo 477 λ* λ* λpo po λ* λ* λqo qo) λ* λro λ* (ro 478 λ* λ* λso so λ* λ* λto to)))))) λ* λuo λ* (uo 14 λ* λvo λ* (vo 29 λ* λwo λ* (wo 59 λ* λxo λ* (xo 119 λ* λyo λ* (yo 239 λ* λzo λ* (zo 479 λ* λ* λap ap λ* λ* λbp bp) λ* λcp λ* (cp 480 λ* λ* λdp dp λ* λ* λep ep)) λ* λfp λ* (fp 240 λ* λgp λ* (gp 481 λ* λ* λhp hp λ* λ* λip ip) λ* λjp λ* (jp 482 λ* λ* λkp kp λ* λ* λlp lp))) λ* λmp λ* (mp 120 λ* λnp λ* (np 241 λ* λop λ* (op 483 λ* λ* λpp pp λ* λ* λqp qp) λ* λrp λ* (rp 484 λ* λ* λsp sp λ* λ* λtp tp)) λ* λup λ* (up 242 λ* λvp λ* (vp 485 λ* λ* λwp wp λ* λ* λxp xp) λ* λyp λ* (yp 486 λ* λ* λzp zp λ* λ* λaq aq)))) λ* λbq λ* (bq 60 λ* λcq λ* (cq 121 λ* λdq λ* (dq 243 λ* λeq λ* (eq 487 λ* λ* λfq fq λ* λ* λgq gq) λ* λhq λ* (hq 488 λ* λ* λiq iq λ* λ* λjq jq)) λ* λkq λ* (kq 244 λ* λlq λ* (lq 489 λ* λ* λmq mq λ* λ* λnq nq) λ* λoq λ* (oq 490 λ* λ* λpq pq λ* λ* λqq qq))) λ* λrq λ* (rq 122 λ* λsq λ* (sq 245 λ* λtq λ* (tq 491 λ* λ* λuq uq λ* λ* λvq vq) λ* λwq λ* (wq 492 λ* λ* λxq xq λ* λ* λyq yq)) λ* λzq λ* (zq 246 λ* λar λ* (ar 493 λ* λ* λbr br λ* λ* λcr cr) λ* λdr λ* (dr 494 λ* λ* λer er λ* λ* λfr fr))))) λ* λgr λ* (gr 30 λ* λhr λ* (hr 61 λ* λir λ* (ir 123 λ* λjr λ* (jr 247 λ* λkr λ* (kr 495 λ* λ* λlr lr λ* λ* λmr mr) λ* λnr λ* (nr 496 λ* λ* λor or λ* λ* λpr pr)) λ* λqr λ* (qr 248 λ* λrr λ* (rr 497 λ* λ* λsr sr λ* λ* λtr tr) λ* λur λ* (ur 498 λ* λ* λvr vr λ* λ* λwr wr))) λ* λxr λ* (xr 124 λ* λyr λ* (yr 249 λ* λzr λ* (zr 499 λ* λ* λas as λ* λ* λbs bs) λ* λcs λ* (cs 500 λ* λ* λds ds λ* λ* λes es)) λ* λfs λ* (fs 250 λ* λgs λ* (gs 501 λ* λ* λhs hs λ* λ* λis is) λ* λjs λ* (js 502 λ* λ* λks ks λ* λ* λls ls)))) λ* λms λ* (ms 62 λ* λns λ* (ns 125 λ* λos λ* (os 251 λ* λps λ* (ps 503 λ* λ* λqs qs λ* λ* λrs rs) λ* λss λ* (ss 504 λ* λ* λts ts λ* λ* λus us)) λ* λvs λ* (vs 252 λ* λws λ* (ws 505 λ* λ* λxs xs λ* λ* λys ys) λ* λzs λ* (zs 506 λ* λ* λat at λ* λ* λbt bt))) λ* λct λ* (ct 126 λ* λdt λ* (dt 253 λ* λet λ* (et 507 λ* λ* λft ft λ* λ* λgt gt) λ* λht λ* (ht 508 λ* λ* λit it λ* λ* λjt jt)) λ* λkt λ* (kt 254 λ* λlt λ* (lt 509 λ* λ* λmt mt λ* λ* λnt nt) λ* λot λ* (ot 510 λ* λ* λpt pt λ* λ* λqt qt))))))))
5 changes: 5 additions & 0 deletions tests/snapshots/examples__neg_fusion.hvm.snap
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
source: tests/golden_tests.rs
input_file: tests/golden_tests/examples/neg_fusion.hvm
---
λa λ* a
Loading