Skip to content
This repository was archived by the owner on May 7, 2024. It is now read-only.

Commit 74f8fa8

Browse files
committed
fix: fix mux signature
1 parent 6d35008 commit 74f8fa8

File tree

1 file changed

+7
-5
lines changed

1 file changed

+7
-5
lines changed

src/core/lang/builtins.rs

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,17 @@
11
use crate::core::lang::lang::{foldhood, mid, nbr};
22
use crate::core::vm::round_vm::round_vm::RoundVM;
33

4-
pub fn mux<A, TH, EL>(vm: RoundVM, cond: bool, th: TH, el: EL) -> (RoundVM, A)
4+
pub fn mux<A, C, TH, EL>(vm: RoundVM, cond: C, th: TH, el: EL) -> (RoundVM, A)
55
where
6+
C: Fn(RoundVM) -> (RoundVM, bool),
67
TH: Fn(RoundVM) -> (RoundVM, A),
78
EL: Fn(RoundVM) -> (RoundVM, A),
89
{
9-
if cond {
10-
th(vm)
10+
let (vm_, flag) = cond(vm);
11+
if flag {
12+
th(vm_)
1113
} else {
12-
el(vm)
14+
el(vm_)
1315
}
1416
}
1517

@@ -26,7 +28,7 @@ pub fn foldhood_plus<A: Copy + 'static, F, G, H>(vm: RoundVM, init: F, aggr: G,
2628
|vm1| {
2729
let (vm_, self_id) = mid(vm1);
2830
let (vm__, nbr_id) = nbr(vm_, |vm2| mid(vm2));
29-
mux(vm__, self_id == nbr_id, expr, init)
31+
mux(vm__, |vm3| (vm3, self_id == nbr_id), expr, init)
3032
}
3133
)
3234
}

0 commit comments

Comments
 (0)