4 ms·
SWIProlog[1] has so far been my go to due to the extensive support system it has. However, I've been meaning to explore higher order logic a bit and Ciao[2] cau
by sriku 4y ago
SWIProlog[1] has so far been my go to due to the extensive support system it has. However, I've been meaning to explore higher order logic a bit and Ciao[2] caught my attention there, with sugar for function-like notation and higher order programming including "lambda" style predicate expressions .... and it compiles down to executable. The function notation in this context is along the same lines as Mozart/Oz and can be convenient. Not explore the higher order aspects much though.
[1]: https://www.swi-prolog.org/ https://www.swi-prolog.org/
[2]: https://en.wikipedia.org/wiki/Ciao_(programming_language) https://en.wikipedia.org/wiki/Ciao_(programming_language)
- YeGoblynQueenne 4y agoHey, if you're interested in higher-order logic programming then you might want to have a look at Meta-Interpretive Learning (MIL). It's a new approach to Inductive Logic Programming (ILP) that learns by SLD-resolution with first- and second-order definite clauses (hence, "higher-order"). You won't find much on MIL as "higher-order logic programming" but that's really what it is: it's logic programming; with a higher-order program (i.e. one containing both first- and second-order clauses). The catch is that once you do this any proof you complete gives you instantiations into the second-order variables in the second-order clauses and now you have yourself a first-order program, that you didn't have before; hence "inductive". So it's basically a form of machine learning of logic programs, from other logic programs. There are a few papers you can find online about MIL, but I recommend (PLUG ALERT) the documentation of the MIL system I created for my doctoral thesis as a starting point: https://github.com/stassa/louise https://github.com/stassa/louise I recommend that as a starting point because it's written for people who are familiar with logic programming, but not necessarily ILP. Anyway, plug over. I think MIL is an exciting new development that has of course gone under the radar of the logic programming community at large.
- cvalka 4y agoBeware of the license - https://github.com/stassa/louise/blob/master/LICENSE.md https://github.com/stassa/louise/blob/master/LICENSE.md
- YeGoblynQueenne 4y agoEh? What's wrong with the license? :P
- javbit 4y agoIt's not a free software license as it restricts freedom zero, the ability to use it for any purpose. https://www.gnu.org/philosophy/free-sw.html#four-freedoms https://www.gnu.org/philosophy/free-sw.html#four-freedoms It's interesting because I'm sure no free software author wants to inadvertently support a dubious cause. The Anti-Mil clause prevents that (in theory at least, as license enforcement is hard for everyone). However, it also nominally prevents use by good causes as well (you can grant exceptions, however). Good and bad here are relative to the author. I guess it's a balancing act between upholding ones own sense of right and wrong, and the freedom for someone else to have a differing opinion than you. Edit: Removed "strictly" from "strictly free software". It's unfree. Edit: Added some words for clarification.
- YeGoblynQueenne 4y agoThanks for your feedback. To be honest I wasn't thinking about free software, I wanted a license that would make the project available to everyone, unless they are affiliated with the military of some nation. There are no such licenses, so I improvised. Perhaps there should be more such licenses. On the other hand, it might also create problems. For example, what if I decide that I don't want my code to be used by people who are against same-sex marriage, or abortion, or who are for those things, or who eat meat, or don't eat meat, etc? In any case, the license is what it is. It's an unfree license. Thanks for pointing it out, I hadn't realised.
- electroly 4y agoThere's an immediate issue and a more important social issue. The immediate issue is that other projects can't use your code because your license is incompatible with their license. That's why we all use the same handful of standard licenses. We definitely can't use non-lawyer licenses with jokes in them. The social issue--which may be more important--is that the use of standard licenses is sort of a shibboleth for industry programmers. Homegrown non-lawyer licenses stick out; you may not be aware of how much signaling this license is doing about the seriousness of the project. It flags the project as purely academic or an unserious toy. Sort of an "outsider art" feel; a product of our industry in-group would have used an unmodified, standard real license instead.
- sriku 4y agoThanks for that ref ... and plugs like that very much welcome!