Example:


\begin{picture}(380,1)(0,0)
\put (0,0){\framebox{(}380,1)}
\end{picture}

This example program retrieves all of the solutions for the query member(X,[1,2,3]).

#include "bprolog.h"

main(argc,argv)
int             argc;
char           *argv[];
{
  TERM query;
  TERM list0,list;
  int res;
  
  initialize_bprolog(argc,argv);
  /* build the list [1,2,3] */
  list = list0 = bp_build_list();
  bp_unify(bp_get_car(list),bp_build_integer(1));
  bp_unify(bp_get_cdr(list),bp_build_list());
  list = bp_get_cdr(list);
  bp_unify(bp_get_car(list),bp_build_integer(2));
  bp_unify(bp_get_cdr(list),bp_build_list());
  list = bp_get_cdr(list);
  bp_unify(bp_get_car(list),bp_build_integer(3));
  bp_unify(bp_get_cdr(list),bp_build_nil());

  /* build the call member(X,list) */
  query = bp_build_structure("member",2);
  bp_unify(bp_get_arg(2,query),list0);

  /* invoke member/2 */
  bp_mount_query_term(query);
  res = bp_next_solution();
  while (res==BP_TRUE){
    bp_write(query); printf("\n");
    res = bp_next_solution();
  }
}
In order to run the program, users first need to replace the content of the file main.c in $BPDIR/Emulator with this program, after which users must recompile the system. The newly-compiled system will give the following outputs.
      member(1,[1,2,3])
      member(2,[1,2,3])
      member(3,[1,2,3])

\begin{picture}(380,1)(0,0)
\put (0,0){\framebox{(}380,1)}
\end{picture}



Neng-Fa Zhou 2013-01-25