官术网_书友最值得收藏!

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.
主站蜘蛛池模板: 连南| 亳州市| 澄城县| 青岛市| 铜鼓县| 南陵县| 武安市| 墨脱县| 枣庄市| 福海县| 会理县| 青阳县| 惠东县| 朝阳县| 嵊州市| 宜宾县| 襄垣县| 平邑县| 福海县| 新丰县| 钦州市| 明星| 潜山县| 长寿区| 和田县| 青冈县| 诸暨市| 三河市| 长子县| 株洲县| 蒲城县| 乐至县| 信宜市| 郓城县| 巴彦淖尔市| 龙州县| 台山市| 上饶县| 临城县| 满城县| 威远县|