According to ISO Prolog, get_byte/2 predicate can receive an
instantiated input byte:
http://www.gprolog.org/manual/html_node/gprolog037.html#sec156
get_byte(+stream_or_alias, ?in_byte)
Since in_byte can be -1 if EOF is reached, instantiating it with -1
should work but does not because the implementation is trying to convert
it to a u8 which is unsigned:
?- open("/dev/null", read, S, [type(binary)]), get_byte(S, -1).
error(type_error(in_byte,-1),get_byte/2).
This commit adds an extra check for -1 before checking for a valid u8
instantiated value if in_byte is an input:
?- open("/dev/null", read, S, [type(binary)]), get_byte(S, -1).
S = '$stream'(0x55601e65c998).
Closes#1625
If first argument n1 in xor/2 is of wrong numerical type, the match
patterns fall through to a catch all case that reports the second
argument in the type error.
Fixes#1626
`xor/2 function reports the wrong argument in type error #1626`
https://github.com/mthom/scryer-prolog/issues/1626