One possible way to classify a programming language is through its characteristic domains. These are the abstract sets from which the values that the language can manipulate are drawn.
Traditionally, there are three such domains:
let f x = x + 1;;
declares the identifier f
to a be function.This classification of programming languages comes from an influential 1973 paper by Christopher Strachey.
Lecture notes on characteristic domains by David Schmidt.
The notion of characteristic domains appeared in the following 1973 paper by Christopher Strachey:
Strachey, Christopher. 1973. ‘The Varieties of Programming Language’. Technical Monograph PRG-10. Oxford: Oxford University Computing Laboratory. https://www.cs.ox.ac.uk/publications/publication3727-abstract.html.
@techreport{strachey_1973,
address = {Oxford},
type = {Technical {Monograph}},
title = {The {Varieties} of {Programming} {Language}},
url = {https://www.cs.ox.ac.uk/publications/publication3727-abstract.html},
number = {PRG-10},
institution = {Oxford University Computing Laboratory},
author = {Strachey, Christopher},
year = {1973}
}
The same paper is reprinted in the volume on Algol-like languages:
Strachey, Christopher. 1997. ‘The Varieties of Programming Language’. In Algol-like Languages, edited by Peter W. O’Hearn and Robert D. Tennent, 51–64. Boston, MA: Birkhäuser Boston. https://doi.org/10.1007/978-1-4612-4118-8_3.
@incollection{strachey_1997,
address = {Boston, MA},
title = {The {Varieties} of {Programming} {Language}},
isbn = {978-1-4612-8661-5 978-1-4612-4118-8},
language = {en},
booktitle = {Algol-like {Languages}},
publisher = {Birkhäuser Boston},
author = {Strachey, Christopher},
editor = {O’Hearn, Peter W. and Tennent, Robert D.},
year = {1997},
doi = {10.1007/978-1-4612-4118-8_3},
pages = {51--64},
}