Hacker News new | ask | show | jobs
by Joker_vD 1743 days ago
> EO is based on 𝜑-calculus (if you want to see its description, join this Telegram chat: @polystat_org).

Because putting this description into a doc/MATHS.md file inside the repo itself is too easy.

Also, a tip for anyone who decides to put out there a programming language with highly exotic operational semantics: please don't forget to put a quick overview of that semantics in the "Tutorial" section. I suspect most people would be puzzled why output is performed by "making a copy of the abstract object stdout with a single argument "Hello world!".

4 comments

They do have a paper in the repo: https://github.com/cqfn/eo/tree/master/paper

According to it, "𝜑-calculus" is something they made up for the eolang and not a standard term.

Here is my take on that calculus based on reading through section 3 in the paper. Note the paper is pretty weird and likes to make its own notation, so it is possible I got some things wrong:

It is starts with a pretty standard immutable language: "object" is a set of (name, value) pairs; "value" is either object or "data" (like a string, bool etc...); everything is immutable but you can make a copy an object with some attributes changed. There are no concept of "types" -- instead, you define objects with some fields set to NULL (spelled ∅ in the paper). There are also a bunch of term defined, like "abstraction", "application", etc.. -- but they all mean "make a copy of an object with some fields changed".

The "twist" is that the language has no functions per se, instead it defines AST-like structure: there is a syntactic sugar that handles things that look like function applications. So when you see:

     stdout "Hello world"
This means "find an object called 'stdout'"; it must have exactly one attribute that was set to NULL ; and make a copy of the "stdout" with that attribute set to value "Hello world".

The "stdout" is what's called "atom", a class which is defined "outside of φ-calculus formal scope". All the actual work is defined via those atoms, which are out of scope. Unfortunately, this means that φ-calculus itself does not define much, and is basically a fancy way to write AST.

And the "Semantics" section straight up reinvents their own flavour of a G-machine... very fancy indeed.

Is there a shortage of existing object calculi that I am not aware of? Even Abadi-Cardelli's calculus can already do just as much, and is also smaller and more concise.

Interesting given their design criteria is no nulls and no syntactic sugar.
reminds me a bit of Piccola: http://scg.unibe.ch/research/piccola/
> Because putting this description into a doc/MATHS.md file inside the repo itself is too easy.

Agreed. Even a link to Wikipedia would be useful: 𝜑-calculus is not the easiest thing to search for, and I'm certainly not going to sign up for a Telegram account just to find out what this is all about.

> In order to compile this program, put it into src/main/eo/main.eo and then create a file pom.xml with this content (it's just a sample):

> <a 47-line XML file />

I have little idea why this is here, what on earth it's for, what 𝜑-calculus is, or anything! I don't even know if it's related to lambda-calculus, modal-µ calculus, or whatever!

So, some highly speculative google-scholaring:

> [1] This article proposes a new arithmetic for fuzzy numbers called ϕ-calculus developed at the LAMIH laboratory (D. Roger and J.-M. Lecomte, 1996). For this algebra, the modeling used for the representation of fuzzy numbers is the distribution function instead of the classical membership function. New functions (square, square root, power, exponential, Neperian logarithm and trigonometric functions) are defined in this paper. With the aim of handling simply ϕ-calculus arithmetic and of comparing it with those of the intervals theory (R.E. Moore, 1966) and the Zadeh's extension principle for fuzzy numbers (L.A. Zadeh, 1965), a toolbox for Matlab has been set up. Also, several examples and an application of automatic control illustrate this algebra.

Aha! So, maybe it's a fuzzy number system -- where you have inherent uncertainty on everything. That's cool, and useful, and something I can totally see the point of (not least in an OO context -- everything has to be an object, as a fuzzy number is a generalization of a regular, real number in the sense that it does not refer to one single value but rather to a connected set of possible values, where each possible value has its own weight between 0 and 1; and that weight is called the membership function -- and a function with some data is basically an object!). Maybe that's what it means. Maybe.

More googling.

> [2] THE φ-CALCULUS – A HYBRID EXTENSION OF THE π-CALCULUS TO EMBEDDED SYSTEMS. [...] The φ-calculus is a hybrid extension of Milner’s π-calculus [17] which allows processes to interact with continuous environments. We choose the π-calculus to extend to the hybrid setting because it has already been shown to be a rich language in which many interesting discrete concurrent phenomena can be expressed: a language for, and theory of, communicating processes which can reconfigure themselves; a language in which distributed objects and classes can be defined; and a language and theory capable not only of expressing communication, but arbitrary computation, in that the λ-calculus of Church can be translated into it. This all suggests that successful hybrid versions of the π-calculus and other process calculi will have novel and elegant ways of expressing hybrid systems – possibilities for distributed control which would be awkward, if not impossible, to express in current formalisms.

Then again, maybe not! I'd love someone to explain what this is all about, ideally relatively simply.

[1] http://dx.doi.org/10.1109/ETFA.2006.355426

[2] https://www.eecs.umich.edu/techreports/cse/02/CSE-TR-458-02....

In the intolerant spirit of the EOLANG designers, signing up for a Telegram account to learn about a language is something I won't tolerate.
I think it's supposed to be a parody? It's some made up OOP version of lambda calculus.

The telegram chat thing is probably a reference to languages like Elm who keep the community discussions on Slack and other proprietary platforms which require login to view.

It's not a parody, the author, Yegor Bugaev, is very serious about it. He published several books on his ideas.
This example helped me:

[r] > circle

  mul 2 3.14 r > perimeter

  mul 3.14 r r > area
The first line creates an “abstract” object named circle. It is abstract, because one of its attributes r is “free”. It’s not specified in this object and that’s why the object can’t be used as is, it has to be copied with r specified. For example, this is the circle c with the radius 30:

circle 30 > c

( Which would be like c=new circle(30) )

https://www.yegor256.com/2020/11/24/objects-without-methods....