Functional programming: Difference between revisions

From Citizendium
Jump to navigation Jump to search
imported>Eric Evers
(New page: ==Functional programming, time and state== A functional programming language is a language modeled after mathematical functions. Non-functional computer programs allow state changes. Sta...)
 
imported>Eric Evers
No edit summary
Line 4: Line 4:
state changes. State changes are represented by changes in the  
state changes. State changes are represented by changes in the  
values of variables over time. In strict functional programming  
values of variables over time. In strict functional programming  
languages variables are not allowed to change durring a single  
languages variables are not allowed to change during a single  
invocation of a function.
invocation of a function.
In strict functional programming state is not saved
outside of function calls. By removing state outside of functions,
side effects are controled.


State may not change during a function call. Fixed state allows
State may not change during a function call. Fixed state allows

Revision as of 14:04, 16 October 2008

Functional programming, time and state

A functional programming language is a language modeled after mathematical functions. Non-functional computer programs allow state changes. State changes are represented by changes in the values of variables over time. In strict functional programming languages variables are not allowed to change during a single invocation of a function.

In strict functional programming state is not saved outside of function calls. By removing state outside of functions, side effects are controled.

State may not change during a function call. Fixed state allows for the control of side effects(bad distant changes caused by local changes). When state is fixed, functions can be treated similar to mathematical functions and facts can be proved about such functions. Some functional programs can be proved to equal to each other or proved to be stable under certain conditions. Such proofs can aid the efforts of software engineers and computer scientists. See (Hutton, 1999) for an example.

Ref 1: Graham Hutton, 1999, [1]

      A tutorial on the universality and expressiveness of fold
      J. Functional Programming 9 (4): 355–372, July 1999,     
      Cambridge University Press.