Challenge 1: Unification in Both Argument Orders — Possible Solution ==================================================================== SWI-Prolog session: ?- point(X, Y) = point(7, 9). X = 7, Y = 9. ?- point(7, 9) = point(X, Y). X = 7, Y = 9. Explanation: Both queries produce IDENTICAL bindings for X and Y, regardless of which term is written on the left and which is on the right. This is exactly the chapter's own central claim: unification has no concept of "the pattern" and "the value" the way Haskell's pattern matching does -- it's simply attempting to make two terms identical, and it doesn't matter which side supplies the variables and which supplies the concrete values. Swapping the order changes nothing about the result. WHY THIS WORKS AS AN ANSWER ------------------------------ This directly demonstrates the chapter's own bidirectionality claim by running the identical unification in both possible orders and confirming the results are the same either way.