|
|
1
10
一个答案是,函数式编程是使用数学中定义的函数(简而言之,将值从域映射到共域的无副作用的东西)进行编程。将其转化为“如何思考”是一个很难详尽无遗的挥手部分,但我会列举一些我的想法:
第一个与模糊有关:“优雅的代码”。列表理解可以呈现非常简洁的数学方程,如函数的定义。看看LC实现的快速排序。这就是我如何定义优雅、简洁,并使所有行为清晰明了。这并不是你最常简洁和神秘的perl代码高尔夫。 第二点是我在所有编程中每天都在使用的东西。将代码划分为当前状态的函数(方法、例程等),这些函数是无副作用的计算,为下一个要采取的行动(甚至是下一个行动)提供输入。当返回值时,将其交给执行所述操作的例程,然后重新开始。 在我的脑海中,我将Erlang进程绘制为状态机图,其中每个顶点都是一个副作用和一个函数,其输出是从顶点中选择哪条边。函数式编程范式教会了我对副作用的高度重视。特别是在Erlang中,因为副作用在并发中确实很重要,而Erlang使并发变得非常可用。 同样,一些孤立的部落只有一个词来表示3以上的数字,或者没有词来表示“我的”/“你的”。感觉流行语言没有“这会导致副作用”的词,但函数式编程有。它迫使你一直意识到这一点,这是一件好事。 |
|
|
2
5
我思考过程的痕迹:
在Haskell中:
我思考过程的痕迹:
|
|
|
3
4
是 与面向对象编程不同,但在两者之间切换时,您不需要完全放弃现有的设计技术。 |
|
|
4
2
我对此的建议是:阅读 The Little Schemer 。您可以在Erlang中跟踪它。这是一本能让你深刻理解这一点的好书。 |
|
|
5
0
它的重要性在于习惯于认为数据可以用作代码,以及 反之亦然 .
我同意。 |
|
|
mritalian · Erlang ETS内存碎片 8 年前 |
|
|
david · Erlang:从主机名获取ip地址 8 年前 |
|
|
Matt · 有没有办法访问GenServer的状态? 8 年前 |
|
|
Chris W · 具有并行HTTP请求的Erlang网络问题 8 年前 |