The predicates that get, peek or put bytes can only be used with binary streams and all predicates that get, peek and put characters or character codes only work with text streams.
| Byte input/output | Character input/output |
| get_byte/1 | get_char/1 |
| get_byte/2 | get_char/2 |
| peek_byte/1 | get_code/1 |
| peek_byte/2 | get_code/2 |
| put_byte/1 | peek_char/1 |
| put_byte/2 | peek_char/2 |
| Text console | peek_code/1 |
| clear_console/0 | peek_code/2 |
| show_console/0 | put_char/1 |
| put_char/2 | |
| put_code/1 | |
| put_code/2 | |
| nl/0 | |
| nl/1 | |
| Stream selection and control | Term input/output |
| at_end_of_stream/0 | char_conversion/2 |
| at_end_of_stream/1 | current_char_conversion/2 |
| close/1 | current_op/3 |
| close/2 | op/3 |
| close_user_streams/0 | read/1 |
| current_input/1 | read/2 |
| current_output/1 | read_term/2 |
| flush_output/0 | read_term/3 |
| flush_output/1 | write/1 |
| open/3 | write/2 |
| open/4 | write_canonical/1 |
| set_input/1 | write_canonical/2 |
| set_output/1 | write_term/2 |
| set_stream_position/2 | write_term/3 |
| stream_property/2 | writeq/1 |
| writeq/2 |