2021-04-29 16:58:16 +03:00
|
|
|
% The MIT License (MIT)
|
|
|
|
%
|
|
|
|
% Copyright (c) 2020-2021 Yegor Bugayenko
|
|
|
|
%
|
|
|
|
% Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
|
|
% of this software and associated documentation files (the "Software"), to deal
|
|
|
|
% in the Software without restriction, including without limitation the rights
|
|
|
|
% to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
|
|
% copies of the Software, and to permit persons to whom the Software is
|
|
|
|
% furnished to do so, subject to the following conditions:
|
|
|
|
%
|
|
|
|
% The above copyright notice and this permission notice shall be included
|
|
|
|
% in all copies or substantial portions of the Software.
|
|
|
|
%
|
|
|
|
% THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
|
|
% IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
|
|
% FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE
|
|
|
|
% AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
|
|
% LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
|
|
% OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
|
|
% SOFTWARE.
|
|
|
|
|
2021-06-13 08:01:57 +03:00
|
|
|
\documentclass[sigplan,nonacm=true,anonymous]{acmart}
|
2021-04-29 16:58:16 +03:00
|
|
|
\settopmatter{printfolios=false,printccs=false,printacmref=false}
|
|
|
|
\usepackage[utf8]{inputenc}
|
2021-06-11 11:12:53 +03:00
|
|
|
\usepackage{ffcode}
|
2021-04-29 16:58:16 +03:00
|
|
|
\usepackage{CJKutf8}
|
|
|
|
\usepackage{paralist}
|
|
|
|
\usepackage{anyfontsize} % To get rid of font not found warnings
|
2021-05-25 11:21:38 +03:00
|
|
|
\usepackage{tabularx} % for special tables
|
2021-04-29 16:58:16 +03:00
|
|
|
\usepackage{amsmath}
|
|
|
|
\usepackage{amsthm}
|
|
|
|
\usepackage{tcolorbox} % for algorithm
|
|
|
|
\tcbuselibrary{skins}
|
|
|
|
\usepackage{fdsymbol} % for \mathbb
|
|
|
|
\usepackage{algpseudocode} % for algorithms
|
|
|
|
\usepackage{multicol} % for two cols in BNF
|
|
|
|
\usepackage{pgffor} % to enable \foreach
|
|
|
|
\usepackage{stmaryrd}
|
|
|
|
\usepackage{mathtools}
|
|
|
|
\newtheoremstyle{theorems}
|
|
|
|
{} % Space above
|
|
|
|
{} % Space below
|
|
|
|
{} % Theorem body font % (default is "\upshape")
|
|
|
|
{} % Indent amount
|
|
|
|
{\scshape} % Theorem head font % (default is \mdseries)
|
|
|
|
{.} % Punctuation after theorem head % default: no punctuation
|
|
|
|
{ } % Space after theorem head
|
|
|
|
{} % Theorem head spec
|
|
|
|
\theoremstyle{theorems}
|
|
|
|
\newtheorem{eodefinition}{Definition}
|
|
|
|
\newtheorem{eotheorem}{Theorem}
|
|
|
|
|
|
|
|
\tolerance=1500
|
|
|
|
\raggedbottom
|
|
|
|
|
2021-06-13 07:47:37 +03:00
|
|
|
\newcommand\nospell[1]{#1}
|
|
|
|
\newcommand\br{\\[-4pt]}
|
|
|
|
\newcommand\figcap[1]{\caption{#1}\Description{#1}}
|
|
|
|
\newcommand\phic{{$\varphi$-calculus}}
|
|
|
|
\newcommand\eo{{\sffamily EO}}
|
|
|
|
\newcommand\tbd[1]{{\color{red}#1}}
|
|
|
|
\newcommand\lref[1]{the line no.~\ref{ln:#1}}
|
|
|
|
\newcommand\lrefs[2]{the lines~\ref{ln:#1}--\ref{ln:#2}}
|
2021-04-29 16:58:16 +03:00
|
|
|
|
2021-06-13 07:45:44 +03:00
|
|
|
\acmBooktitle{untitled}
|
2021-04-29 16:58:16 +03:00
|
|
|
\title{EOLANG and $\varphi$-calculus}
|
|
|
|
\author{Yegor Bugayenko}{}{}
|
|
|
|
\email{yegor256@gmail.com}
|
|
|
|
\affiliation{
|
|
|
|
\institution{}
|
|
|
|
\city{Moscow}
|
|
|
|
\country{Russia}
|
|
|
|
}
|
|
|
|
\ccsdesc[300]{Software and its engineering~Software notations and tools~Formal language definitions}
|
|
|
|
\keywords{Object-Oriented Programming, Object Calculus}
|
|
|
|
|
2021-06-10 15:33:19 +03:00
|
|
|
\input{tikz-config}
|
2021-04-29 16:58:16 +03:00
|
|
|
\begin{document}
|
|
|
|
|
|
|
|
\begin{abstract}
|
|
|
|
Object-oriented programming (OOP) is one of the most popular
|
|
|
|
paradigms used for building software systems. However, despite
|
|
|
|
its industrial and academic popularity, OOP is still missing
|
|
|
|
a formal apparatus similar to $\lambda$-calculus, which functional
|
|
|
|
programming is based on. There were a number of attempts to formalize
|
|
|
|
OOP, but none of them managed to cover all the features available in
|
|
|
|
modern OO programming languages, such as C++ or Java.
|
|
|
|
We've made yet another attempt and created \phic{}. We also
|
|
|
|
created EOLANG (also called \eo{}), an experimental
|
|
|
|
programming language based on \phic{}.
|
|
|
|
\end{abstract}
|
|
|
|
|
|
|
|
\maketitle
|
|
|
|
|
|
|
|
\section{Overview}
|
|
|
|
\input{overview}
|
|
|
|
|
|
|
|
\section{Syntax}
|
|
|
|
\label{sec:syntax}
|
|
|
|
\input{syntax}
|
|
|
|
|
|
|
|
\section{Calculus}
|
|
|
|
\label{sec:calculus}
|
|
|
|
\input{calculus}
|
|
|
|
|
|
|
|
\section{Semantics}
|
|
|
|
\label{sec:semantics}
|
|
|
|
\input{semantics}
|
|
|
|
|
|
|
|
\section{Pragmatics}
|
|
|
|
\label{sec:pragmatics}
|
|
|
|
\input{pragmatics}
|
|
|
|
|
2021-05-27 20:56:31 +03:00
|
|
|
\section{Examples}
|
|
|
|
\label{sec:examples}
|
|
|
|
\input{examples}
|
|
|
|
|
2021-06-13 07:00:48 +03:00
|
|
|
\section{Related Works}
|
|
|
|
\label{sec:related}
|
|
|
|
\input{related}
|
|
|
|
|
2021-04-29 16:58:16 +03:00
|
|
|
\section{Acknowledgments}
|
|
|
|
|
|
|
|
Many thanks to (in alphabetic order of last names)
|
|
|
|
\nospell{Fabricio Cabral},
|
|
|
|
\nospell{Kirill Chernyavskiy},
|
|
|
|
\nospell{Piotr Chmielowski},
|
|
|
|
\nospell{Konstantin Gukov},
|
|
|
|
\nospell{Ali-Sultan Kirgizbaev},
|
2021-06-06 15:11:02 +03:00
|
|
|
\nospell{Tymur $\lambda$ysenko},
|
2021-06-11 11:32:17 +03:00
|
|
|
\nospell{Alexandr Naumchev},
|
2021-04-29 16:58:16 +03:00
|
|
|
\nospell{Alonso A. Ortega},
|
|
|
|
\nospell{John Page},
|
|
|
|
\nospell{Alex Panov},
|
2021-05-17 22:22:41 +03:00
|
|
|
\nospell{Alexander Pushkarev},
|
2021-04-29 16:58:16 +03:00
|
|
|
\nospell{Marcos Douglas B. Santos},
|
|
|
|
\nospell{Alex Semenyuk},
|
|
|
|
\nospell{Sergei Skliar},
|
|
|
|
\nospell{Stian Soiland-Reyes},
|
|
|
|
\nospell{Viacheslav Tradunskyi},
|
|
|
|
\nospell{Ilya Trub},
|
|
|
|
and
|
|
|
|
\nospell{César Soto Valero}
|
|
|
|
for their contribution to the development of \eo{} and \phic{}.
|
|
|
|
|
|
|
|
\bibliographystyle{ACM-Reference-Format}
|
|
|
|
\raggedright
|
|
|
|
\bibliography{main}
|
|
|
|
\clearpage
|
|
|
|
|
|
|
|
\end{document}
|