Book contents
- Frontmatter
- Contents
- Preface
- About the illustrations
- List of illustrations
- List of tables
- PART I BACKGROUND
- PART II FIRST EXAMPLES
- PART III LANGUAGE CONSTRUCTS
- 5 Control structures
- 6 Blocks and procedures (1)
- 7 Parameters
- 8 Concurrent communicating processes
- 9 Structured declarations
- 10 Blocks and procedures (2)
- 11 Concurrent object-oriented languages
- 12 Functional programming languages
- PART IV RELATED TOPICS
- Appendix A A big-step semantics of Bip
- Appendix B Implementing semantic definitions in SML
- References
- Index
12 - Functional programming languages
Published online by Cambridge University Press: 05 August 2012
- Frontmatter
- Contents
- Preface
- About the illustrations
- List of illustrations
- List of tables
- PART I BACKGROUND
- PART II FIRST EXAMPLES
- PART III LANGUAGE CONSTRUCTS
- 5 Control structures
- 6 Blocks and procedures (1)
- 7 Parameters
- 8 Concurrent communicating processes
- 9 Structured declarations
- 10 Blocks and procedures (2)
- 11 Concurrent object-oriented languages
- 12 Functional programming languages
- PART IV RELATED TOPICS
- Appendix A A big-step semantics of Bip
- Appendix B Implementing semantic definitions in SML
- References
- Index
Summary
This chapter gives a short introduction to functional programming languages and their structural operational semantics.
In the first sections we take a look at the characteristic features of programming languages of this kind (Section 12.1) and how they arose (Section 12.2). Then, in Section 12.3, we provide a short introduction to the theoretical foundations of functional programming languages, the λ-calculus.
Finally, in Section 12.4 we introduce the language Flan, which is a subset of ML, and show how to give it a big-step and a small-step semantics.
What is a functional programming language?
In languages such as C, Java, Pascal and Bims variable assignment is a central language construct. A program in any of these languages is essentially a highly structured sequence of variable assignments that change the contents of the store. Languages with this central characteristic are known as imperative languages. It is not particularly surprising that the environment-store model is well suited for the semantics of imperative languages.
However, there are programming languages that take a very different approach. A functional programming language is an expression-based language – a functional program is essentially a collection of declarations of functions, as opposed to a sequence of statements. A function f is a function in the sense of ordinary mathematics – given an argument x, the value of the application f(x) depends only on the value of x.
- Type
- Chapter
- Information
- Transitions and TreesAn Introduction to Structural Operational Semantics, pp. 171 - 182Publisher: Cambridge University PressPrint publication year: 2010