Missing parts in ISO compliance
prologlib still does not support some ISO functionalities. Below, you can find a list of unsupported stuff, grouped by category.
Many. Most. Well... all but
Occur check is not implemented, so
unify_with_occur_check/2 does not exist.
Byte I/O is not implemented:
peek_byte/1-2 are missing. Also so-called read options and write options are not supported, so
write_term/2-3 are missing as well. You can still use
writeq/1-2 to output terms in quoted form, but
write_canonical/1-2 is not implemented. Finally, also the
past-end-of-stream position and its related
eof_action are not supported.
The set of provided operators is pretty fixed: no
op/3 (both predicate and directive), not even
once/1 is also missing.
The flags situation is very similar to the directives' one, even if in the case of flags this shortage is somehow justified, because it wouldn't make sense to support some flags such as
max_arity &c. in a Python environment. So, it's faster to list supported flags:
debug (which exists, but has no effects),
For the 99 Prolog problems...
prologlib source code includes some Prolog examples that you can execute to get a taste of the system. Among them, I included the solution to most of the so-called 99 Prolog problems: some predicates are grouped by functionality (e.g. in
mtree.pl) some others are still in the
99pp subdirectory of the
example directory with their own problem number preserved. However, some problems are completely missing, because their solution used some non-ISO builtin predicate that
prologlib does not support:
writef/2 (for many),
between/3 (for problems 58 and 60), the evaluable functor
max/2 (for problems 65 and 66),
char_type/2 (for problems 67a, 67b, and 69), and that incredible directive that allows you to use a predicate as an evaluable functor that I don't remember the name of right now. Problem 68c has been ditched because its solution was too slow on
prologlib. Problems from 80 to 99 were not even tried... really for no reason at all.