@@ -71,6 +71,7 @@ pub fn generate_jets() -> Jets {
7171 (104452959965816676316166435675758878521, LSH),
7272 (84358434946425438379820219100952030132, RSH),
7373 (49642221456321333759873032692286222867, RAP),
74+ (92956425869648916777812729456192604084, REP),
7475 ])
7576}
7677
@@ -694,3 +695,19 @@ static RAP: Jet = |ctx, n| {
694695
695696 Rc::new(Noun::Atom(target))
696697};
698+
699+static REP: Jet = |ctx, n| {
700+ let (bite, b) = n.as_cell().unwrap();
701+ let bite = bite.as_bite().unwrap();
702+
703+ let bits = bite.bits();
704+ let mask = (&ctx.big_uints.one << bits) - &ctx.big_uints.one;
705+
706+ let mut target = ctx.big_uints.zero.clone();
707+
708+ for el in b.list_iter().collect::<Vec<_>>().iter().rev() {
709+ target = (target << bits) | (el.as_atom().unwrap() & &mask);
710+ }
711+
712+ Rc::new(Noun::Atom(target))
713+};