- Learning C++ Functional Programming
- Wisnu Anggoro
- 257字
- 2021-07-02 20:51:33
Preface
Functional programming is a style of constructing the elements and structure of a computer program by composing pure functions, avoiding shared state, mutable data, and side-effects, like we usually see in mathematics. The variable in the code function represents the value of the function parameter, and it is similar to the mathematical function. The idea is that a programmer defines the functions that contain the expression, definition, and the parameters that can be expressed by a variable to solve problems.
Functional programming is declarative rather than imperative, which means programming is done with expressions or declarations instead of statements. The application state of functional programming flows through pure functions, so it avoids the side effect. In contrast to imperative programming, the application state is usually shared and collocated with methods in objects. In imperative programming, the expressions are evaluated, and the resulting value is assigned to variables. For instance, when we group a series of expressions into a function, the resulting value depends upon the state of variables at that point in time. Because of the continuous changes in state, the order of evaluation matters. In functional programming, destructive assignment is forbidden, and each time an assignment happens, a new variable is induced. Best of all, functional code tends to be more concise and predictable, and easier to test than imperative or object-oriented code.
Although there are some specifically designed languages for functional programming, such as Haskell and Scala, we can also use C++ to accomplish designing functional programming, as we will discuss throughout this book.
- 極簡(jiǎn)算法史:從數(shù)學(xué)到機(jī)器的故事
- Spring 5.0 By Example
- GraphQL學(xué)習(xí)指南
- Java EE框架整合開發(fā)入門到實(shí)戰(zhàn):Spring+Spring MVC+MyBatis(微課版)
- Vue.js 3.x從入門到精通(視頻教學(xué)版)
- 網(wǎng)絡(luò)爬蟲原理與實(shí)踐:基于C#語(yǔ)言
- Java EE 8 Application Development
- 機(jī)器學(xué)習(xí)與R語(yǔ)言實(shí)戰(zhàn)
- 區(qū)塊鏈技術(shù)與應(yīng)用
- Python機(jī)器學(xué)習(xí)算法: 原理、實(shí)現(xiàn)與案例
- RealSenseTM互動(dòng)開發(fā)實(shí)戰(zhàn)
- 細(xì)說(shuō)Python編程:從入門到科學(xué)計(jì)算
- ActionScript 3.0從入門到精通(視頻實(shí)戰(zhàn)版)
- MySQL 8從零開始學(xué)(視頻教學(xué)版)
- 征服C指針(第2版)