But, just to clarify, is that what is meant by "general purpose", that a programmer can write anything they want and there are libraries to boot?
The main reason I am very confused about "general purpose" is because, in my experience, Prolog is very much a language where you can write any kind of program you want. And there are libraries applenty in SWI-Prolog, although of course Prolog has a much smaller community than Python so one should not expect quite the same level of support, I guess.
In theory, I could write a replacement for the Linux kernel in machine code or COBOL or even Prolog. This doesn’t mean that it would be wise to do so. (I’ve written code in professional settings in all of these ways.)
> "You can write anything in python, from quick and dirty replacements for bash scripts"
SWI Prolog: can do shell scripts with shebang lines, args, reading from stdin, for 8+ years: https://www.swi-prolog.org/pldoc/man?section=plscript
Directory and file interactions: https://www.swi-prolog.org/pldoc/man?section=files
OS integrations for shelling out or environment variables: https://www.swi-prolog.org/pldoc/man?section=system
and regex support: https://www.swi-prolog.org/pldoc/doc_for?object=section(%27p...
> "to windows desktop applications"
SWI Prolog has a builtin cross-platform GUI library/toolkit: https://www.swi-prolog.org/packages/xpce/examples.html
> "clustered supercomputer code"
Not sure about supercomputing, but SWI has:
Threading: https://www.swi-prolog.org/search?for=thread&in=lib&match=su...
Transparent Inter-Process Communications (TIPC) libraries "a framework for cooperation between federations of trusted peers that are operating as a unit. It was developed by Ericsson AB" - https://www.swi-prolog.org/pldoc/doc_for?object=section(%27p...
Addons which include an MPI library port: https://www.swi-prolog.org/pack/list
> "It also has an library ecosystem to match."
SWI won't have anything like Python's ecosystem due to many fewer users, but it has a non-toy ecosystem of networking code, image processing, database connecting, more performant datastructures, Protocol Buffers, Unicode, YAML, SGML, XML, Http, zlib, gzip, unit testing, debugging, profiling, FFI, etc.
I mean, you might not want to, but it's not like you have to start from half a dozen Turing Machine instructions and an infinite tape and work your way up from there.