Pretty exciting stuff! I'd also be curious how well CTEs work; Postgres seems to have Turing-complete recursive CTEs, while SQLite and ANSI have some peculiar restrictions presumably to guarantee termination. They might even be the same restrictions, I don't know.
Unfortunate you can't add new operators in Python the way you can in Prolog or OCaml to get a readable infix syntax like the one you chose but without the misleading operators like <= for :-. (I've done worse, though...)
My maybe inaccurate understanding of recursive CTEs was that they only allow linear occurrences of the recursively defined relation in the query and do not allow many mutually recursively defined relations. These might be per implementation restrictions. These are pretty harsh restrictions from a datalog perspective. I should explore what Postgres offers more. It's just so easy to try stuff out on sqlite.
Oh no, yet another article that looks super interesting and will be in a browser tab until I decide to read it and that requires quite a lot of background info I don't know how to get yet. Oh well.
Pretty exciting stuff! I'd also be curious how well CTEs work; Postgres seems to have Turing-complete recursive CTEs, while SQLite and ANSI have some peculiar restrictions presumably to guarantee termination. They might even be the same restrictions, I don't know.
Unfortunate you can't add new operators in Python the way you can in Prolog or OCaml to get a readable infix syntax like the one you chose but without the misleading operators like <= for :-. (I've done worse, though...)
Yeah, using `<=` in this way is pretty sinful.
My maybe inaccurate understanding of recursive CTEs was that they only allow linear occurrences of the recursively defined relation in the query and do not allow many mutually recursively defined relations. These might be per implementation restrictions. These are pretty harsh restrictions from a datalog perspective. I should explore what Postgres offers more. It's just so easy to try stuff out on sqlite.
Oh no, yet another article that looks super interesting and will be in a browser tab until I decide to read it and that requires quite a lot of background info I don't know how to get yet. Oh well.