* Mode declarations.
* Extensions for clp(FD).
* `if_` and related predicates, following the developments of the
- paper "Indexing `dif/2`".
+ paper "Indexing `dif/2`".
+* Strings, blobs, and other data types typical of Prolog that may not yet
+ know of or have left out.
+
+## Phase 3
+
+Use the WAM code generated by the completed code generator to target LLVM
+IR to get JIT-compiled and -executed Prolog programs.
## Tutorial
To enter a multi-clause predicate, the brackets ":{" and "}:" are used
submit(&mut wam, "f(P, X) :- call(P, X).");
- assert_eq!(submit(&mut wam, "?- f(p(one), one)."), true);
+ assert_eq!(submit(&mut wam, "?- f(p(one), one)."), true);
+ assert_eq!(submit(&mut wam, "?- f(p(two), two)."), true);
+ assert_eq!(submit(&mut wam, "?- f(p(two), one)."), false);
+ assert_eq!(submit(&mut wam, "?- f(p(three), one)."), false);
+ assert_eq!(submit(&mut wam, "?- f(p(one), three)."), false);
+ assert_eq!(submit(&mut wam, "?- f(p(two), three)."), false);
+
+ submit(&mut wam, "p(f(g(X)), compound, [lists,are,good]).");
+
+ assert_eq!(submit(&mut wam, "?- call(p(f(g(X))), Y, Z)."), true);
}
}