Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Dinner Guests

187 views
Skip to first unread message

Anne Ogborn

unread,
Jun 23, 2018, 1:36:02 AM6/23/18
to
As many of you are probably aware, I'm teaching an online 8 week course on SWI-Prolog, aimed at working programmers writing in other languages.

I have 354 very enthusiastic students enrolled. 80% said they were professional programmers.

Hacker News recently had a front page article on Prolog.

Joe Armstrong, of Erlang fame, has a large, active social media presence, and has been talking about Prolog a lot.

Prolog based startup Kyndi recently had some nice publicity.

Besides the deluge of student questions, I've seen a noticeable upward jog in the number of basic Prolog questions I'm answering from programmers exploring Prolog on their own.

All of these folks are exploring Prolog, and with it, the Prolog community.

I love Prolog partly because it attracts amazingly erudite people. Reasoned disagreement is in our blood. But I've heard from a few folks recently that it's looking to outsiders more like personal attack.

Please let that inform how vociferously you push your position, and whether to respond to personal invective.

We have dinner guests. This is not the best time for a family fight.

Thanks,

Annie



Julio Di Egidio

unread,
Jun 23, 2018, 3:55:58 AM6/23/18
to
On Saturday, 23 June 2018 07:36:02 UTC+2, Anne Ogborn wrote:

> We have dinner guests. This is not the best time for a family fight.

Cut the crap, you've never been my family: rather show some respect and try
and do some honest business for a change, you and the whole bandwagon...

*Plonk*

Julio

janb...@easel.ch

unread,
Jun 23, 2018, 8:23:49 AM6/23/18
to
Well there is a latin saying:

Amicus Plato, sed magis amica veritas

You cannot evolve Prolog VMs by creating fraud. So
for serious Prolog VM development its very important
to do a lot of testing and put the cards on the table.

This is not possible in the SWI-Prolog forum, its not
an open community. Its a closed, product oriented, community.
Like right now they have banned me again, and I cannot

respond to the latest Paulo Moura attack.

See also here:
https://groups.google.com/d/msg/swi-prolog/f8LpJN8MYm0/e7PNIY2qBgAJ

So I will respond here:

Paulo Mouro, your code has errors, what you try latest
to do with reexport/1 and (:)/2 doesn't work. You simply
try to 1-1 translate Logtalk to reexport/1 and (:)/2.

But a 1-1 translation doesn't work, you observed that
already yourself, and I confirmed your observation. Just
read the thread again, you will see that I confirmed it.

On my side the reexport/1 and (:)/2 case has already been
closed, namely with my last testing of Java/Scala. The
only interesting thing would be some large scale real

world applications, with a wide and deep taxonomy. Of
course this would require code that runs without erros.
Testing crashing code doesn't give you some empirical

data. The crashes are interesting to verify that the 1-1
translation of Logtalk doesn't work. But they are a rather
idiotic feat, if it were about benchmarking Prolog VMs.

burs...@gmail.com

unread,
Jun 23, 2018, 8:37:57 AM6/23/18
to
So whats the bottom line? Maybe that twitter,
and comp.lang.prolog, are the current better forum
for Prolog, than a closed SWI-Prolog list.

I don't care. comp.lang.prolog is already >30
years old, it is still a good place to find Prolog
issues documented. You will never find the same

in a controlled SWI-Prolog list.

burs...@gmail.com

unread,
Jun 23, 2018, 8:57:56 AM6/23/18
to
Maybe this #prologclass thing is getting totally out
of hands. You all sound like complete morons:

"Keeping the language accessible to all
sorts of folks is important to us."
https://edu.swi-prolog.org/

Is this the beginning of the Third Reich of SWI-Prolog?
SWI-Prolog can even not do list terms that are ISO core

standard compatible. So what?

burs...@gmail.com

unread,
Jun 23, 2018, 9:03:41 AM6/23/18
to
But the list term thing happened, because they
wanted some dot terms, which is related to
reexport/1 and (:)/2, and also related to Logtalk,

Logtalk being a kind of parallel development
to dot terms. Anyway, you will be able to sort
this all out in the future. I see no problem

in that...

burs...@gmail.com

unread,
Jun 23, 2018, 11:44:16 AM6/23/18
to
Here you see the beginning of Third Reich mediocrity,
in all its glory, including annonymous whistleblowers:

"The project team is obligated to maintain confidentiality
with regard to the reporter of an incident."
https://www.contributor-covenant.org/version/1/4/code-of-conduct

This means you can go from open source project to
defunct brainwashed community, that even accepts

nonsense such as Logtalk, in 5 minutes.

Am Samstag, 23. Juni 2018 14:57:56 UTC+2 schrieb burs...@gmail.com:

burs...@gmail.com

unread,
Jun 23, 2018, 11:56:52 AM6/23/18
to
Even wikipedia is not that extreme. If I remember
well, you see who does a delete request etc.. And
its even archived etc..

So the only open thing in open source projects is
possibly only the code, although this is also not
guaranteed that what you see in repository tip,

is the real thing. I am doing the same my GitHub
repository is only a projection. But lets assume we
believe that there is something like

open source, then the only thing that is open is
the source code, but everything according to such
rules of conduct, gets quite intransparent,

everything is closed and behind curtains and basically
not made transparent in any way. You can find such
problems of seemingly community approachs,

with yet not enough transparency also elsewhere...

burs...@gmail.com

unread,
Oct 5, 2018, 12:12:07 PM10/5/18
to
So when is the best time to have stimulating
discussions? Never ever again? Just sit around
a table like sheep? FMH on your Astro Turf?

So what was some culture in the past:
======================================

Node:fuck me harder, Next:FUD, Previous:FUBAR, Up:= F =

fuck me harder excl.

Sometimes uttered in response to egregious misbehavior,
esp. in software, and esp. of misbehaviors which seem
unfairly persistent (as though designed in by the imp
of the perverse). Often theatrically elaborated:
"Aiighhh! Fuck me with a piledriver and 16 feet of
curare-tipped wrought-iron fence and no lubricants!"
The phrase is sometimes heard abbreviated `FMH'
in polite company.

[This entry is an extreme example of the hackish
habit of coining elaborate and evocative terms for
lossage. Here we see a quite self-conscious parody
of mainstream expletives that has become a running
gag in part of the hacker culture; it illustrates
the hackish tendency to turn any situation, even
one of extreme frustration, into an intellectual
game (the point being, in this case, to creatively
produce a long-winded description of the most
anatomically absurd mental image possible -- the
short forms implicitly allude to all the ridiculous
long forms ever spoken). Scatological language is
actually relatively uncommon among hackers, and
there was some controversy over whether this
entry ought to be included at all. As it reflects
a live usage recognizably peculiar to the hacker
culture, we feel it is in the hackish spirit of
truthfulness and opposition to all forms of
censorship to record it here. --ESR & GLS]

And what is some culture supposed to be now?
============================================

Code of Conduct für Linux:
Mit Bürokratie zum Duckmäusertum
https://www.heise.de/ix/meldung/Code-of-Conduct-fuer-Linux-Mit-Buerokratie-zum-Duckmaeusertum-4176439.html

j4n bur53

unread,
Oct 5, 2018, 12:16:27 PM10/5/18
to

j4n bur53

unread,
Feb 5, 2019, 8:53:23 PM2/5/19
to
kint...@gmail.com thinks that Anne Ogborn
is a troll bot, when she writes:

"write_canonical does help with operators, but
yes, it'd be useful if there was a form that
expanded a list. If interop is a problem, maybe
add write_very_canonical that does '[|]'"
https://groups.google.com/d/msg/swi-prolog/4IQMKsBLyGo/ZInxgQd2CgAJ

I mean SWI-Prolog is trolling the ISO core standard
already for years. But a stupid troll is something new.

j4n bur53

unread,
Feb 5, 2019, 8:56:14 PM2/5/19
to
SWI-Prolog has trolled the ISO core standard
intelligently, in relation to those that got
trolled, by their so called deliberate decisions.

Ha Ha

j4n bur53

unread,
Feb 5, 2019, 9:00:29 PM2/5/19
to
The 7 signs that SWI-Prolog is slowly dying:

1. It is invaded by stupid trolls.
2. It is invaded by stupid trolls.
3. It is invaded by stupid trolls.
4. It is invaded by stupid trolls.
5. It is invaded by stupid trolls.
6. It is invaded by stupid trolls.
7. It is invaded by stupid trolls.

kint...@gmail.com

unread,
Feb 5, 2019, 10:38:22 PM2/5/19
to
> On Tuesday, February 5, 2019 at 9:00:29 PM UTC-5, j4n bur53 wrote:
> The 7 signs that SWI-Prolog is slowly dying:
>
> 1. It is invaded by stupid trolls.
> 2. It is invaded by stupid trolls.
> 3. It is invaded by stupid trolls.
> 4. It is invaded by stupid trolls.
> 5. It is invaded by stupid trolls.
> 6. It is invaded by stupid trolls.
> 7. It is invaded by stupid trolls.

Inaccurate and nonfair to trolls which are actually somehwat fearsome and agressive string things ; perhaps with reference to those victims of their of ego 'trulls" is a better word akin to the self-satisfied smurky sound they make for example "trull trull this week I will earn my tenure by writing a logic paper about prolog that contains no prolog code" or "trull trull that placement of the semicolon was not seen before 1985 therefore it is nonacceptable in (our!) prolog community" .

The 7 signs that SWI-Prolog attracts the slowly dying:

1. It is invaded by stupid trulls .
2. It is invaded by stupid trulls .
3. It is invaded by stupid trulls .
4. It is invaded by stupid trulls .
5. It is invaded by stupid trulls .
6. It has the best most accessible prolog documentation online .
7. It has an up-to-date package system .

~~~~~~kintalken~~~~~~

j4n bur53

unread,
Feb 6, 2019, 5:28:06 AM2/6/19
to
Well, also troll systems might have some
benefits, like batteries included. Ha Ha

j4n bur53

unread,
Feb 6, 2019, 5:38:28 AM2/6/19
to
A simple test case would do, to see that instead:

?- write_term([a,b,c], [dotlists(true)]).
.(a,.(b,.(c,[])))

This one is prefered in ISO:

?- write_term([a,b,c], [dotlists(true)]).
'.'(a,'.'(b,'.'(c,[])))

Or was this some trolling of the ISO standard?

In doubt just check:

GNU Prolog 1.4.5 (64 bits)

| ?- write_canonical([a,b,c]).
'.'(a,'.'(b,'.'(c,[])))

And you could implement reading such terms tail
recursive with fix-up, not using any stack. I never
tried this yet, but it should be possible.

I already copy_term/2 this way with fixup. For
example copying this term:

s(s(...s(s(0))...))
\-- 10^5 times --/

Can be done without any stack. You just copy
the last argument going into a tail recursive loop
and point it to the parent.

Then when there is no mare last argument you
reverse the parent chain, and you get as
a result a proper copied term.

Could be also done with reading, lets say
compounds only input, those parts of the input
that are compounds only.

j4n bur53

unread,
Feb 6, 2019, 5:42:39 AM2/6/19
to
The algorithm is here, copy_term/2 with a loop
in the last argument:

public final class EngineCopy {
public final Object copyTerm(Object t, Display d) {
SkelCompound back = null;
for (; ; ) {
https://github.com/jburse/jekejeke-devel/blob/master/jekrun/headless/jekpro/frequent/standard/EngineCopy.java#L102

j4n bur53

unread,
Feb 6, 2019, 6:07:20 AM2/6/19
to
Not much time to investigate a new realization
of the parser, that applies the same trick to
reading.

Probably more important for Log-Nonsense-Talk,
which uses write_canonical/[1,2] as intermediate
format.

On the other hand some quick format, can of
course do it as well very easily.

kint...@gmail.com

unread,
Feb 6, 2019, 7:55:03 AM2/6/19
to

<!--,[\"j4n->bUr53\"]--> And you could implement reading such terms tail
<!--,[\"j4n->bUr53\"]--> recursive with fix-up, not using any stack. I never
<!--,[\"j4n->bUr53\"]--> tried this yet, but it should be possible.
<!--,[\"j4n->bUr53\"]-->
<!--,[\"j4n->bUr53\"]--> I already copy_term/2 this way with fixup. For
<!--,[\"j4n->bUr53\"]--> example copying this term:
> >
<!--,[\"j4n->bUr53\"]--> s(s(...s(s(0))...))
<!--,[\"j4n->bUr53\"]--> \-- 10^5 times --/
<!--,[\"j4n->bUr53\"]-->
<!--,[\"j4n->bUr53\"]--> Can be done without any stack. You just copy
<!--,[\"j4n->bUr53\"]--> the last argument going into a tail recursive loop
<!--,[\"j4n->bUr53\"]--> and point it to the parent.
<!--,[\"j4n->bUr53\"]-->
<!--,[\"j4n->bUr53\"]--> Then when there is no mare last argument you
<!--,[\"j4n->bUr53\"]--> reverse the parent chain, and you get as
<!--,[\"j4n->bUr53\"]--> a result a proper copied term.

<!--,[\"j4n->bUr53\"]--> The algorithm is here, copy_term/2 with a loop
<!--,[\"j4n->bUr53\"]--> in the last argument:
>
<!--,[\"j4n->bUr53\"]--> https://github.com/jburse/jekejeke-devel/blob/master/jekrun/headless/jekpro/frequent/standard/EngineCopy.java#L102

<!--,[\"kin->talkEN\"]--> Which is the tail-recursive call You mentioned
<!--,[\"kin->talkEN\"]--> as potentially marked in the following extract ?
<!--,[\"kin->talkEN\"]--> Also , implied in Your previous comment is that
<!--,[\"kin->talkEN\"]--> left-to-right parsing is exact same as bottom-to-top
<!--,[\"kin->talkEN\"]--> parsing , but obviously different ?

<pre data-type="text/java">

/*...*/ if (t instanceof SkelCompound) {
SkelCompound sc = (SkelCompound) t;
if (sc.var != null) {
Object[] args = new Object[sc.args.length];
for (int i = 0; i < sc.args.length - 1; i++)
args[i] = copyTerm(sc.args[i], d); %&recursive;; .
args[sc.args.length - 1] = back;
back = new SkelCompound(sc.sym, args, null); %&recursive;; .
t = sc.args[sc.args.length - 1];
} else {
break;
} /*...*/

</pre>

~~~~~~kintalken~~~~~~~

kint...@gmail.com

unread,
Feb 6, 2019, 8:03:02 AM2/6/19
to
<!--,[\"j4n<-talkEN\"]--> Not much time to investigate a new realization
<!--,[\"j4n<-talkEN\"]--> of the parser, that applies the same trick to
<!--,[\"j4n<-talkEN\"]--> reading.

<!--,[\"Kintalken<-talkEN\"]--> You are obviously T00 busy watching educational
<!--,[\"Kintalken<-talkEN\"]--> documentaries chosen for You by Netflix and
<!--,[\"Kintalken<-talkEN\"]--> baking muffins for children at the FoodBank
<!--,[\"Kintalken<-talkEN\"]--> thus not much time for logic nur code .
<!--,[\"kINtalken<-talkEN\"]--> { logic\xor/code } , { code/<=>\rational-proof }

kint...@gmail.com

unread,
Feb 7, 2019, 10:02:23 AM2/7/19
to
> On Saturday, June 23, 2018 at 8:23:49 AM UTC-4, janb...@easel.ch wrote:
> Well there is a latin saying:
>
> Amicus Plato, sed magis amica veritas

Those shadow-cave dwellers on swi-prolog are \+ yer audience j4n sorry if that bUrst yer bubble .
Yer audience is the children of the future as yet nonborn and nonnamed .
Those bozos scrambling for personal shine by associating them-self with prolog will be long forgotten whilst the children of the future are plundering the archives to learn from the madness of that great prolog philosopher of yore \"j4n+bUr53\" who maybe never did write an academic paper about prolog that contained no prolog code but maybe did actually demonstrate alignment with the heart of the prolog mentat by producing viable working code .

Sure She is right they have a \"family\" good thing too because that herd and its customs and its inadequacies codifies and represents a \"mentalitea\" and that \"mentalitea\" should be a target of Yours and Mine at least insomuch as we might be motivated to understand it so that We can eliminate it from the inheritance of those we truly care about .

Consider also that You carry (likely) an inherited burden of limited permission to extend Your Self appreciation in respect insomuch as that appreciation and respect cannot by social convention allow You to think of Your Self as significantlea different than Your neighbours . Therefore unable to recognize of Your Self the territorea You have created for Your Self in the prolog strasophere as consequence of Your own hard work applied intelligence and actually production of working code You will be motivated to create of the target of Your attention something that is very stupid and inadequate even though it is not so much tht the target of attention is stupid and inadequate it is more so that the target of Your attention is stupid and inadequate compared to You .

:-if dialect(swi) .
bork
-->
{ Y = ((1).(2).(3).[]) , X = [1,2,3] , Y = X } .
:- endif .

If ever I was invited to such a dinner as tht I shall bring red wine
(mandatory gift to give to ivory-tower hats)
and maybe a big poster I can put on the wall looks like this :

<svg><text>\+ !</text></svg>

perhaps play this song :

<https://www.youtube.com/watch?v=5mKgh_GVX94>

Oh and program the audio recorder on my mudBI1I73 phone to auto-start recording whenever detecting in the nvironment the word "implies" ... shit they spwew around thta word is hilarious .

~~~~~~ kintalken ~~~~~~

j4n bur53

unread,
Feb 15, 2019, 8:49:44 AM2/15/19
to
Lets position the work on the trio webserver,
especially creating a framework for the HTTP
protocol and the WS protocol.

There is only one danger in doing these frameworks.
To succumb to the curse of DSL. Already SWI-Prolog
has made the error to popularize Prolog for DSL.

In that they write:

"Its reflective capabilities as well as its
`program is data' view makes it an ideal
platform for domain specific languages (DSLs)
or micro languages, which allows for concise
description of application knowledge and separation
of this knowledge from how it is applied."
http://www.swi-prolog.org/Directions.html#guides

But Prolog is a general purpose language. I have already
seen people claiming that Prolog is exclusively for
DSL, which is utter nonsense.

But what is the goal of a framework for HTTP or WS,
if not a DSL? What is the difference beween pengines and
a HTTP server that can do REST requests. Here are

some answers:

1) The framework here are not in the spirit of some
DSL nonsense. The idea is more to provide object halfs,
for the protocols inbetween. So in distributed programming

an primary concern is to make the recurring connection
between object halfs less painful. So without distribution
an service object and its client looks as follows:

+-----------------------------------+
| +---------+ (::)/2 +-----------+ |
| | Client |--------| Service | |
| +---------+ +-----------+ |
| Host |
+-----------------------------------+

Invokinng the service object is just sending a message to
the service object and getting a response. This is like the
Logtalk send operator (::)/2, also found in Jekejeke Prolog

directly based on ISO core standard modules. If you distribute
the thingy you get two stubs the client stub and the service
stub, and inbetween some protocol:

+--------------------------+ +---------------------------+
| +---------+ (::)/2 +----+|Protocol|+---+ (::)/2 +-----------+ |
| | Client |--------| ||--------|| |--------| Service | |
| +---------+ +----+| |+---+ +-----------+ |
|Host 1 | |Host 2 |
+--------------------------+ +---------------------------+

http://wiki.c2.com/?HalfObjectPlusProtocol

2) So basically pengines and a HTTP framework should
be no difference. A HTTP framework should already allow
addressing service objects inside different Prolog

context. The only thing that might be demanded might
be a management service object, that allows creating,
destroying and managing Prolog contexts. But otherwise

the HTTP framework itself should already be powerful
enough to query service objects inside a Prolog context.

j4n bur53

unread,
Feb 15, 2019, 9:05:06 AM2/15/19
to
In WS protocol and HTTP protocol there is much
freedom how, in terms of formats, the object halfs
exchange requests and responses, this is why we

find a lot of approaches:

- SOAP
- JSON RPC
- Etc..

The choice of the request and response format
depends on the client half as well, and it might
be that we have no influence on the client half.

But to the extend I have already seen AJAX browser
integration, and Web Socket browser integration,
they still leave the format of requests and responses

open. Well not fully open, for example to view a
page without further frameworks in a browser, the
formats HTML, GIF, CSS, etc.. are recommended.

But still there is freedom, for example when integration
your own web sockets inside a page, you can decide
the format of requests and responses by yourself.

Still such formats are not necessarely a DSLs. A
DSL might be useful to model the speech acts the
requests and responses take part of, namely the

effect on the client side and the server side. But
again we want to leave this open. Neither do we think
DSLs are always needed, nor do we think that fluent

interfaces fit the bill of Prolog programming style.
Actually shoe horning Prolog into fluent interfaces is
again some nonsense, because Prolog has its own

way of fluent programming:

Fluent Programming outside of Prolog
https://en.wikipedia.org/wiki/Fluent_interface

Fluent Programming in Prolog
Go figure out yourself! Ha Ha

Taking notes to myself: Somebody should write a book
fluent programming in Prolog, and zero in all the common
idioms used in fluent programming and show how this is

done in Prolog without much hassle.

j4n bur53

unread,
Feb 20, 2019, 7:27:58 AM2/20/19
to
Gotcha, here is the crazy meme again:

"miniKanren is an embedded Domain
Specific Language for logic programming"
https://twitter.com/k_llyi/status/1097658479932784640

What does this mean? Is Logic Programming itself
DSL, and miniKanren got it crippled so that it
is not anymore general purpose?

or does somebody here use DSL simply in the sense
Language A hosts Language B. Martin Fowler thinks
"DSLs are small languages, focused on a particular

https://martinfowler.com/books/dsl.html

aspect of a software system." So what does the miniKaren
language focus on. On being logical? In conclusion
because the host language Closure is illogical then?

Ha Ha

Mostowski Collapse

unread,
Jun 19, 2020, 8:06:43 AM6/19/20
to
The greatest failure in Prolog marketing. Letting
Joe Armstrong come to the table. Now everybody
brain washed parallel = Erlang. And parallel missing
in Prolog. Thats a devastating result,

and especially a failure for the SWI-Prolog community
which seems to be extremly suceptible to the Erlang
brainwash. Anyway, Joe Armstrong is dead, was he an
early Covid victim? Maybe SARS-1? Who knows?

But the damage is immense.

Am Samstag, 23. Juni 2018 07:36:02 UTC+2 schrieb Anne Ogborn:

Mostowski Collapse

unread,
Jun 19, 2020, 8:15:08 AM6/19/20
to
The damage is so immense, that common people
can even not program the most simple parallel
computing problems in Prolog.

But there are excellent multi-threading Prolog
systems around, and thanks to Last-Call Optimization
(LCO), if desired, Erlang style tail recursion

is also possible. In as far Prolog is a multi-
paradigm language. Its also possible to do
other stuff, like certain stream like parallel

processing, capitalizing backtracking. The
only person that has recognized that was,
saw a glimpse of it, Torbjörn Lager. But then

why waste a shitty paper "Intro to Web Prolog
for Erlangers"? Nobody cares about Erlang.
Erlang is long dead, replaced by Elixir,

which is also dead. Just toy language.

Prolog just doesn't have enough self confidence.
Even Jan W. hsd legs shaking like leaves in
the simplest concurrency questions.

LMAO!

Mostowski Collapse

unread,
Jun 19, 2020, 8:37:30 AM6/19/20
to
Well some were successful in the past by
climb into bed with others:

Bélla geránt aliī, tu félix Áustria nūbe.
Nám quae Márs aliīs, dát tibi díva Venūs.
https://de.wikipedia.org/wiki/Felix_Austria

Not sure whether this makes sense for
Prolog systems. It wont sharpen

your own weapons.

Mostowski Collapse

unread,
Jun 19, 2020, 8:41:57 AM6/19/20
to
The fallacy of:

Ilias (5,428 f), als Zeus Aphrodite

οὔ τοι, τέκνον ἐμόν, δέδοται πολεμήια ἔργα,
ἀλλὰ σύ γ' ἱμερόεντα μετέρχεο ἔργα γάμοιο!
https://de.wikipedia.org/wiki/Heiratspolitik_der_Habsburger#Identit%C3%A4tsstiftendes_Motto
0 new messages