- Functional Python Programming
- Steven F. Lott
- 231字
- 2021-08-27 19:20:23
Learning some advanced concepts
We will set some more advanced concepts aside for consideration in later chapters. These concepts are part of the implementation of a purely functional language. Since Python isn't purely functional, our hybrid approach won't require deep consideration of these topics.
We will identify these up front for the benefit of folks who already know a functional language such as Haskell and are learning Python. The underlying concerns are present in all programming languages but we'll tackle them differently in Python. In many cases, we can and will drop into imperative programming rather than use a strictly functional approach.
The topics are as follows:
- Referential transparency: When looking at lazy evaluation and the various kinds of optimizations that are possible in a compiled language, the idea of multiple routes to the same object is important. In Python, this isn't as important because there aren't any relevant compile-time optimizations.
- Currying: The type systems will employ currying to reduce multiple-argument functions to single-argument functions. We'll look at currying in some depth in Chapter 11, Decorator Design Techniques.
- Monads: These are purely functional constructs that allow us to structure a sequential pipeline of processing in a flexible way. In some cases, we'll resort to imperative Python to achieve the same end. We'll also leverage the elegant PyMonad library for this. We'll defer this until Chapter 14, The PyMonad Library.
推薦閱讀
- Instant Node Package Manager
- Unreal Engine Physics Essentials
- AngularJS入門與進(jìn)階
- PHP程序設(shè)計(jì)(慕課版)
- Mastering phpMyAdmin 3.4 for Effective MySQL Management
- 基于Java技術(shù)的Web應(yīng)用開發(fā)
- Java FX應(yīng)用開發(fā)教程
- DevOps Automation Cookbook
- Windows Server 2012 Unified Remote Access Planning and Deployment
- Building a Recommendation Engine with Scala
- MySQL數(shù)據(jù)庫(kù)管理與開發(fā)(慕課版)
- HTML5+CSS3+JavaScript Web開發(fā)案例教程(在線實(shí)訓(xùn)版)
- 網(wǎng)站構(gòu)建技術(shù)
- Clojure for Machine Learning
- RESTful Web Clients:基于超媒體的可復(fù)用客戶端