@@ -90,17 +90,13 @@ pub type Jet = fn(ctx: &InterpreterContext, Rc<Noun>) -> Rc<Noun>;
91static BINARY_ATOM: fn(Rc<Noun>, fn(&Atom, &Atom) -> Atom) -> Rc<Noun> =
91static BINARY_ATOM: fn(Rc<Noun>, fn(&Atom, &Atom) -> Atom) -> Rc<Noun> =
92 |n: Rc<Noun>, f: fn(&Atom, &Atom) -> Atom| {
92 |n: Rc<Noun>, f: fn(&Atom, &Atom) -> Atom| {
93− let Noun::Cell { p, q, .. } = (*n).clone() else {
93+ let (p, q) = n.as_cell().unwrap();
96 Rc::new(Noun::Atom(f(p.as_atom().unwrap(), q.as_atom().unwrap())))
94 Rc::new(Noun::Atom(f(p.as_atom().unwrap(), q.as_atom().unwrap())))
99static BINARY_ATOM_LOOB: fn(&InterpreterContext, Rc<Noun>, fn(&Atom, &Atom) -> bool) -> Rc<Noun> =
97static BINARY_ATOM_LOOB: fn(&InterpreterContext, Rc<Noun>, fn(&Atom, &Atom) -> bool) -> Rc<Noun> =
100 |ctx: &InterpreterContext, n: Rc<Noun>, f: fn(&Atom, &Atom) -> bool| {
98 |ctx: &InterpreterContext, n: Rc<Noun>, f: fn(&Atom, &Atom) -> bool| {
101− let Noun::Cell { p, q, .. } = (*n).clone() else {
99+ let (p, q) = n.as_cell().unwrap();
105 if f(p.as_atom().unwrap(), q.as_atom().unwrap()) {
101 if f(p.as_atom().unwrap(), q.as_atom().unwrap()) {
106 ctx.nouns.sig.clone()
102 ctx.nouns.sig.clone()
@@ -111,9 +107,8 @@ static BINARY_ATOM_LOOB: fn(&InterpreterContext, Rc<Noun>, fn(&Atom, &Atom) -> b
112static BINARY_ATOM_PAIR: fn(Rc<Noun>, fn(&Atom, &Atom) -> (Atom, Atom)) -> Rc<Noun> =
108static BINARY_ATOM_PAIR: fn(Rc<Noun>, fn(&Atom, &Atom) -> (Atom, Atom)) -> Rc<Noun> =
113 |n: Rc<Noun>, f: fn(&Atom, &Atom) -> (Atom, Atom)| {
109 |n: Rc<Noun>, f: fn(&Atom, &Atom) -> (Atom, Atom)| {
114− let Noun::Cell { p, q, .. } = (*n).clone() else {
110+ let (p, q) = n.as_cell().unwrap();
117 let (a, b) = f(p.as_atom().unwrap(), q.as_atom().unwrap());
112 let (a, b) = f(p.as_atom().unwrap(), q.as_atom().unwrap());
118 cell(Rc::new(Noun::Atom(a)), Rc::new(Noun::Atom(b)))
113 cell(Rc::new(Noun::Atom(a)), Rc::new(Noun::Atom(b)))