_ => {
let mut addr = sorted;
- while let Addr::Lis(mut l) = self.store(self.deref(addr)) {
+ while let Addr::Lis(l) = self.store(self.deref(addr)) {
+ let mut new_l = l;
+
loop {
- match self.heap[l].clone() {
- HeapCellValue::Addr(Addr::Str(new_l)) => l = new_l,
+ match self.heap[new_l].clone() {
+ HeapCellValue::Addr(Addr::Str(l)) => new_l = l,
HeapCellValue::NamedStr(2, ref name, Some(Fixity::In))
if name.as_str() == "-" => break,
HeapCellValue::Addr(Addr::HeapCell(_)) => break,
};
}
- addr = Addr::HeapCell(l + 2);
+ addr = self.store(self.deref(Addr::HeapCell(l + 1)));
}
Ok(())
HeapCellValue::Addr(Addr::Con(Constant::EmptyList)) =>
break,
hcv =>
- return Err(self.type_error(ValidType::List, hcv.as_addr(l)))
+ return Err(self.type_error(ValidType::List, a1))
};
}