35

To taper expectations a little bit, I will first note that the term "programming language" is deliberately broad: it is intended to be open to some interpretation. It means, no more and no less, any convention that is used for describing instructions for computers to execute. This includes, for example, not just C++ and Python, but also things like ...


3

The specific CS topic resolving the question is: Incremental computing A detailed article explaining a related DSL is: IceDust: Incremental and Eventual Computation of Derived Values in Persistent Object Graphs


3

Presumably, what Scala does (since you mentioned it) is relax your step 2. It is incorrect to check that the type of $f$ is merely 'of the form' $T → U$ because it is applied. Rather, one should check that the type of $f$ is known to be a subtype of some $T → U$. In Scala, such subtyping 'facts' can be added by declaration when defining a type. So, arrays ...


2

I think it is very hard to give a definition that is both general, formal, and not too general. And I don't think I've seen any attempts. Nevertheless, here is an attempt at a mathematical definition. A programming language consists of a set of programs $P$ such that each element of $P$ is finite and for each element $p$ of $P$ there is triple $m(p) = (I,O,...


1

Note that programs in a programming language don't need to be written down as text, there are programming languages that use graphs instead. So anything that restricts programming languages to text is not a formal, rigorous description of a programming language. Note that for many text-based programming languages, the set of programs in the language cannot ...


Only top voted, non community-wiki answers of a minimum length are eligible