;; Ancestor predicate using recursion + backtracking (define (ancestor ?x ?y) (or (parent ?x ?y) (exists ((?z (parent ?x ?z))) (ancestor ?z ?y))))
;; Query: Who are Alice’s grandchildren? (println (run* (?g) (ancestor 'alice ?g))) : Shen Professional 3.1.epub
| Feature | Why It Matters | |---------|----------------| | | Guarantees referential transparency, making reasoning about code easier. | | Logic programming integration | Allows you to write Prolog‑style queries directly within Shen code. | | Object‑oriented layer | Provides familiar class‑like structures for those from OOP backgrounds. | | Self‑hosting compiler | The language can compile itself, showcasing its own expressive power. | ;; Ancestor predicate using recursion + backtracking (define