Es gibt zwei gemeinsame (*) models of computation: das Lambda Calculus (LC) Modell und das Turing Machine (TM) Modell.
Lambda-Kalkül nähert sich der Berechnung, indem sie es unter Verwendung eines mathematischen Formalismus darstellt, in dem Ergebnisse durch die Zusammensetzung von Funktionen über eine Domäne von Typen erzeugt werden. LC steht auch in Zusammenhang mit Combinatory Logic, was als allgemeinerer Ansatz für dasselbe Thema gilt.
Die Turing Machine Modell nähert sich der Berechnung, indem es als die Manipulation von Symbolen auf idealisierten Speicher mit einem Körper von grundlegenden Operationen (wie Addition, Mutation, etc.) gespeichert darstellt.
Diese verschiedenen Berechnungsmodelle sind die Grundlage für verschiedene Programmiersprachenfamilien.Lambda Calculus hat zu Sprachen wie ML, Scheme und Haskell geführt. Das Turing-Modell hat zu C, C++, Pascal und anderen geführt. Als Verallgemeinerung haben die meisten functional programming Sprachen eine theoretische Basis in der Lambda-Kalkül.
Aufgrund der Natur der Lambda-Kalkül, sind bestimmte Beweise über das Verhalten von Systemen basierend auf seinen Prinzipien möglich. Tatsächlich ist die Beweisbarkeit (dh correctness) ein wichtiges Konzept in LC und ermöglicht bestimmte Arten von Schlussfolgerungen und Schlussfolgerungen über LC-Systeme. LC steht auch in Zusammenhang mit der Typentheorie und der Kategorientheorie.
Im Gegensatz dazu beruhen Turing-Modelle weniger auf der Typentheorie und mehr auf der Strukturierung der Berechnung als einer Reihe von Zustandsübergängen im zugrundeliegenden Modell. Turing Machine Modelle der Berechnung sind schwieriger Aussagen zu machen und eignen sich nicht für die gleichen mathematischen Beweise und Manipulationen, die LC-basierte Programme tun. Dies bedeutet jedoch nicht, dass eine solche Analyse nicht möglich ist - einige wichtige Aspekte von TM-Modellen werden bei der Untersuchung von Virtualisierung und statischer Analyse von Programmen verwendet.
Da die funktionale Programmierung auf einer sorgfältigen Auswahl der Typen und der Transformation zwischen den Typen beruht, kann FP als "mathematischer" Vorgang angesehen werden.
(*) Andere Berechnungsmodelle existieren ebenfalls, aber sie sind weniger relevant für diese Diskussion.
Es ist wichtig zu erwähnen, dass diese beiden Modelle gleichwertig sind. –