More best kept secrets of Prolog: Pattern Matching Everybody loves pattern matching. Languages like Python, release 3.10, even provide it now. There is now a match/case statement
in Python. But Prolog users will scratch their head. Will my if-then-else be as fast as a imperative switch jump table lookup? Dogelog runtime has stepped up its game concerning pattern matching. It now provides ECLiPSe Prolog disjunction and if-then-else indexing. Take this example: ?- [user]. foo(X,Y) :- X=baz, Y=2; X=bar -> Y=1. SWI-Prolog leaves a choice point, so no clause indexing used: /* SWI-Prolog 8.3.26 */ ?- foo(baz,Z). Z = 2 ; %%% Spurious Choice Point false. Dogelog doesn't leave a choice point, since it can index the disjunction and if-then-else: /* Dogelog Runtime 0.9.3 */ ?- foo(baz,Z). Z = 2. %%% No Choice Point See also: Preview: Dogelog disjunction and if-then-else indexing. (Jekejeke) https://twitter.com/dogelogch/status/1433446729974796293 Preview: Dogelog disjunction and if-then-else indexing. (Jekejeke) https://www.facebook.com/groups/dogelog -- https://mail.python.org/mailman/listinfo/python-list