diff --git a/src/machine/system_calls.rs b/src/machine/system_calls.rs index b05dd102..f74ad4a8 100644 --- a/src/machine/system_calls.rs +++ b/src/machine/system_calls.rs @@ -2181,6 +2181,17 @@ impl Machine { self.machine_st.fail = true; } + (HeapCellValueTag::Cons, ptr) => { + match_untyped_arena_ptr!(ptr, + (ArenaHeaderTag::Stream, stream) => { + let alias = stream.options().get_alias().unwrap(); + self.machine_st.unify_complete_string(alias, a2); + } + _ => { + unreachable!(); + } + ); + } _ => { unreachable!(); } @@ -2240,6 +2251,22 @@ impl Machine { } } } + (HeapCellValueTag::Cons, ptr) => { + match_untyped_arena_ptr!(ptr, + (ArenaHeaderTag::Stream, stream) => { + let alias = stream.options().get_alias().unwrap(); + + let iter = alias.chars() + .map(|c| fixnum_as_cell!(Fixnum::build_with(c as i64))); + + let h = iter_to_heap_list(&mut self.machine_st.heap, iter); + unify!(self.machine_st, heap_loc_as_cell!(h), self.machine_st.registers[2]); + } + _ => { + unreachable!(); + } + ); + } _ => { unreachable!(); }