| Did you know ... | Search Documentation: |
| Avoiding using the C-stack for traversing terms |
SWI-Prolog (like many other Prolog systems) uses C recursive functions to traverse terms. This is problematic because
The table below lists Prolog predicates whose C implementation contains recursive functions operating on terms. There are two classes of functions.
This table is created using the tools in src/tools in the source
distribution. These tools require a recent Linux system and GCC.
Last updated for version: V5.11.22-78-g19d83e4
| $add_directive_wic/1 | do_save_qlf_term |
| $clause_term_position/3 | find_if_then_end |
| $record_clause/2 | analyseVariables2, compileArgument, compileBody |
| $record_clause/3 | analyseVariables2, compileArgument, compileBody |
| asserta/1 | analyseVariables2, compileArgument, compileBody |
| asserta/2 | analyseVariables2, compileArgument, compileBody |
| assertz/1 | analyseVariables2, compileArgument, compileBody |
| assertz/2 | analyseVariables2, compileArgument, compileBody |
| atom_to_term/3 | complex_term, writeTerm |
| format/2 | writeTerm |
| format/3 | writeTerm |
| instance/2 | decompileBody |
| print/1 | writeTerm |
| print/2 | writeTerm |
| read/1 | complex_term |
| read/2 | complex_term |
| read_clause/1 | complex_term |
| read_clause/2 | complex_term |
| read_term/2 | complex_term |
| read_term/3 | complex_term |
| term_hash/2 | termHashValue |
| term_hash/4 | termHashValue |
| term_to_atom/2 | complex_term, writeTerm |
| write/1 | writeTerm |
| write/2 | writeTerm |
| write_canonical/1 | writeTerm |
| write_canonical/2 | writeTerm |
| write_term/2 | writeTerm |
| write_term/3 | writeTerm |
| writeq/1 | writeTerm |
| writeq/2 | writeTerm |