The file
test_cpp.cpp 
contains examples of Prolog predicates written in C++. This file is used 
for testing (called from
test_cpp.pl). 
Notable examples:
- add_num/3 - 
same as A3 is A1+A2, converting the sum to an integer if 
possible.
- name_arity/3 
- C++ implementation of functor/3.
- average/3 - 
computes the average of all the solutions to Goal
- can_unify/2 
- tests whether the two arguments can unify with each other, without 
instantiating anything (similar to unifiable/3).
- eq1/1, eq2/2, eq3/2 
- three different ways of implementing =/2.
- write_list/1 
- outputs the elements of a list, each on a new line.
- cappend/3 
- appends two lists (requires that the two lists are instantiated).
- square_roots/2 
- same as bagof(Sqrt, X^(between(0,4,X), Sqrt is sqrt(X)), A2).
- range_cpp/3 
- on backtracking, generates all integers starting at A1 and 
less than A2 (that is, one less than between/3).
- int_info/2 
- on backtracking generates all the integral types with their minimum 
and maximum values.
The file
likes.cpp 
contains a simple program that calls the Prolog predicate likes/2 
and
happy/1 (these 
predicates are defined in
likes.pl. 
The usage and how to compile the code are in comments in likes.cpp