Python函数式编程系列012:惰性列表之生成器与迭代器

2021-10-25
阅读 3 分钟
1.8k
因为本系列还是基于一些已经对Python有一定熟悉度的读者,所以我们在此不做非常多的赘述来介绍基本知识了。而是回我们之前的主题,我们要用迭代器和生成器实现之前的指数函数。

Python函数式编程系列011:类与类型

2021-10-19
阅读 3 分钟
1.4k
我在前面水管模型的叙述中,一直将函数式的假想敌人想象成「过程式」编程。这里当然我们就不免地对编程语言做一些简单的分类。许多人认为函数式编程相反的概念是面向对象编程,但其实这里存在了非常多的误解。我在前面的文章里,一直强调如果要使用一个新的概念,就必须至少在那篇文章里做说明。一路走来,函数式的基本...

Python函数式编程系列010:惰性列表之动手实现List

2021-10-18
阅读 3 分钟
2k
这篇文章,我们要动手实现一个List,不过和一般的文章不同,我们这里不用类来实现,而是用基本的数据结构,二元元组(a, b)和空元组()来实现。这两个都可以通过lambda直接定义出来,具体方法可以参考上一篇的内容。

Python函数式编程系列009:惰性列表之常规列表

2021-10-15
阅读 3 分钟
1.9k
我们在惰性求值中,我们介绍了「惰性列表」的概念,这个概念,其实在Python种也有部分原生支持。这就是很受新手困扰的生成器和迭代器了。但之前,我们首先要回顾一下关于列表的功能。

Python函数式编程系列008:可测

2021-10-13
阅读 2 分钟
1.3k
我们在之前的文章之中,已经反复地强调了很多函数式编程的优点,例如表达能力,延迟计算的好处之类的。但其实一个更大的有点其实是可测性。本篇文章也是传达整个系列要表达的核心,我们不是要完全排除过程式、副作用等概念,而是有限的使用,并且能在现有代码的基础上做改良。

Python函数式编程系列005:离题之定义自然数

2021-10-12
阅读 3 分钟
1.2k
在我们已经掌握了那么多建管子的方法之后,我们开始离题,看看我们能用最少的概念做哪些自举产生的事。在这一章中我们讲仅使用字符串"e",函数,if-else分支,=="e"运算,这四个概念来实现一个自然数的概念(实际中还用到了bool值,不过bool本身也可以用"e"和f("e")表示)。

Python函数式编程系列006:Y组合子与递归

2021-10-12
阅读 3 分钟
2.5k
在上一篇「离题」的文章中,我们介绍了如何单纯通过几个简单概念实现一个自然数的概念。这也告诉我们,其实函数式编程一个最核心的内容就是用最少的概念派生性地产生更多的概念来实现功能。这个不像Java之类的对象式语言需要的原生概念非常多,然后又需要更多的派生概念解决问题。

Python函数式编程系列004:递归

2021-10-12
阅读 3 分钟
1.5k
说到代码复用,最低层次的代码复用就是基于for/while等的递推(iteration)思路了,它们的策略在代码行的重复,我们可以看一下下面求幂的例子(这个例子将在之后会以各种面目出现):

Python函数式编程系列007:惰性求值

2021-10-12
阅读 5 分钟
2.9k
本系列文章一些重要的函数、方法、类我都实现的一遍,你可以在github(点击此处)中找到代码和测试例子(如果网速过慢我也放了一份在gitee(点击此处)上,但请勿在gitee上提issue或者留言),欢迎star/fork。

Python函数式编程系列003:一等公民

2021-09-24
阅读 3 分钟
1.5k
这篇文章里,我们将讨论一个函数式编程的重要概念,「函数是一等公民」,顺便引出科里化、Partial Applied Function、多元函数的概念。

Python函数式编程系列002:水管模型和compose

2021-09-24
阅读 2 分钟
2k
过程式思维里,每一个可变变量、函数/过程指称的符号,类似告诉你一个屋子的名字。对一个静态语言来说,我们可能还需要屋子里只能放什么东西。然后,我们每一次调用一次函数/过程,就是将对对应屋子里的函数取出来,以及其他屋子里的物件取出来,按照函数的方式重新整理,把结果放到原先的屋子或者新的屋子里。(注意这...

Python函数式编程系列001:无副作用

2021-09-23
阅读 3 分钟
2.6k
这个博客的目的本来是讨论数据(用\(\tau\)表示)和函数式编程/计算机科学(用\(\lambda\)表示)的两类主题的。但事实上,本博客还没写过任何关于函数式编程的内容,显得有些「名不副实」。而近几年在一些项目上和自己理论学习中的实践,对于函数式编程有了一些不大不小的洞识。希望能借由这个系列来给大家传递一些函数式...

Making Your Python Codes More Functional

2016-03-14
阅读 3 分钟
3.8k
本篇文章是基于Joel Grus: Learning Data Science Using Functional Python视频的笔记。 常用的函数 currying 在Python中实现科里化的最佳方案是functools.partial。例如以下例子: {代码...} reduce、map、filter 这几个是常见的FP中处理列表的函数,在此不做介绍。 注意:Python这得reduce在functools包中。 iterators...