Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

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/

[2]: https://en.wikipedia.org/wiki/Ciao_(programming_language)



Hey, 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

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.



Eh? What's wrong with the license? :P


It'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

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.


Thanks 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.


There'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.


Thanks for your comment.

>> 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.

The simplest solution to this problem that comes to mind is that other projects adopt the same license as mine. That would also take care of the social issue.

You say the license marks me as an outgroup to an ingroup. Given that the license prohibits the use of my code by users affiliated with the military of any nation, that's not an ingroup I want to be part of, and I think, if that's the result of using the license, then mission accomplished.

The joke of course is silly. It's an Easter egg. It could be removed if there was a real need.

But let's make no bones about this: the entire matter is completely irrelevant because the reason most people would have to not use my code is not the license, but the fact that it's written in Prolog, and it's a system that learns Prolog programs from Prolog programs. There is currently about 0 interest in that, outside a very narrow academic circle and certainly not in the wider industry, or the "ingroup" you mention above.

So really, the license, or the joke in it, makes no difference at all in practice.


Yes but that wouldn't accomplish the obvious intent of the license, which is clearly important to the author.

I think they're signaling exactly what they want to.


Thanks for that ref ... and plugs like that very much welcome!




Consider applying for YC's Winter 2027 batch! Applications are open till November 2.

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: