I like how you challenged the idea of wanting more business adoption... many language communities imo spend too much time considering the business appeal and adoption (or the lack thereof usually).
I think that Prolog *is* a type system already. Any language with sophisticated type system will probably use concepts similar to logic programming: a predicate that should hold for any instance of a particular type, constraints for allowed values, and so on. Basically, it looks like "a type system" is a logical program that is executed during compile time to verify the program in other language.
One of the *very* large benefits of static typing is speeding up development by reducing the number of bugs a programmer must uncover with testing or trial or error. Similarly, a much larger range of code refactorings can be automated with static typing, providing additional programmer efficiencies. Optional type hinting (as in Python 3) has also proven it's worth - warning about inconsistencies and serving as parameter documentation, and providing meta-data describing procedure specifications (e.g for code generators for PCs from other languages), are proven values of typing, all independently of whether they affect the compiled code at all.
The argument for static typing depends on the data. Because if you have a table which is string, string & string there is no benefit. Ideally we should have static typing which can be used (like in Ciao Prolog) but where the default is off, because not all data benefits from it.. :)
We need better, modern Prolog books. Most of the classic Prolog books, while good, don’t make strong distinctions between the pure logical features and the extra-logical features. Everything is just mixed together and you might get a sentence that states that if you use such and such a predicate that inferences only work in one direction. And, of course, being older, they simply don’t cover newer features like clp(z) and clp(b) libraries, if_, etc.
One can allways have a tatoo on ones forehead, which says "This person does not talkabout themselves." Hmm, ... maybe we could have a system, which tells us what type of person someone is ....
One could posit that any error the type system did not or could not prevent is a problem with the power of the type system. Rust's type system is less powerful than Haskell's, for example, which in turn has a type system less powerful than Agda. Of course, once you are in the realm of dependent types where you, for example, have to specify (and maybe prove) that a function is total, the type system might be as undecidable as the language itself.
That's a fine argument for optional typing, not for no typing. If Prologers are waiting for correct AND complete, we might be stuck here for quite some time.
I like how you challenged the idea of wanting more business adoption... many language communities imo spend too much time considering the business appeal and adoption (or the lack thereof usually).
I think that Prolog *is* a type system already. Any language with sophisticated type system will probably use concepts similar to logic programming: a predicate that should hold for any instance of a particular type, constraints for allowed values, and so on. Basically, it looks like "a type system" is a logical program that is executed during compile time to verify the program in other language.
One of the *very* large benefits of static typing is speeding up development by reducing the number of bugs a programmer must uncover with testing or trial or error. Similarly, a much larger range of code refactorings can be automated with static typing, providing additional programmer efficiencies.
Optional type hinting (as in Python 3) has also proven it's worth - warning about inconsistencies and serving as parameter documentation, and providing meta-data describing procedure specifications (e.g
for code generators for PCs from other languages), are proven values of typing, all independently of whether they affect the compiled code at all.
Love your ending!
What about SWI Prolog? It seems to be quite feature full
Please see this text for a many good points about this system: www.complang.tuwien.ac.at/ulrich/iso-prolog/SWI7_and_ISO
The argument for static typing depends on the data. Because if you have a table which is string, string & string there is no benefit. Ideally we should have static typing which can be used (like in Ciao Prolog) but where the default is off, because not all data benefits from it.. :)
We need better, modern Prolog books. Most of the classic Prolog books, while good, don’t make strong distinctions between the pure logical features and the extra-logical features. Everything is just mixed together and you might get a sentence that states that if you use such and such a predicate that inferences only work in one direction. And, of course, being older, they simply don’t cover newer features like clp(z) and clp(b) libraries, if_, etc.
One can allways have a tatoo on ones forehead, which says "This person does not talkabout themselves."
Hmm, ... maybe we could have a system, which tells us what type of person someone is ....
One could posit that any error the type system did not or could not prevent is a problem with the power of the type system. Rust's type system is less powerful than Haskell's, for example, which in turn has a type system less powerful than Agda. Of course, once you are in the realm of dependent types where you, for example, have to specify (and maybe prove) that a function is total, the type system might be as undecidable as the language itself.
That's a fine argument for optional typing, not for no typing. If Prologers are waiting for correct AND complete, we might be stuck here for quite some time.
Rust and eveything written in it is garbage.
Welcome ... Linux filesystem maintainers?