F# 编程:从函数式到命令式的全面探索
1. 函数式编程中的累加器
在函数式编程里,累加器有着重要的地位。形式为 type1 -> type2 -> type2 的类型常常用于模拟访问者累加函数。这类函数会遍历集合(类型为 type1 )中的每个元素,并将结果累加(类型为 type2 )。例如,一个将整数累加到整数集合中的访问者函数,其类型为 int -> Set<int> -> Set<int> 。
函数类型能够对众多不同概念进行建模,这正是函数式编程经久不衰的魅力所在。这也是 F# 为面向对象编程带来的令人耳目一新的特性之一:许多简单的抽象可以用非常简单的方式进行建模,并且通常可以通过正交、统一的构造(如匿名函数值和函数组合)来实现简单的实现。
2. 函数式编程与命令式编程概述
函数式编程范式的核心是“无副作用编程”,也就是纯函数式编程。在这种范式中,程序计算数学表达式的结果,不会产生任何副作用,只是简单地返回计算结果。像电子表格中使用的公式通常就是纯的,函数式编程语言(如 Haskell)的核心也是如此。
然而,F# 并非纯函数式语言,函数和表达式可以有副作用。在 F# 中编写纯函数和表达式是很常见的,但你也可以编写会修改数据、执行输入/输出、进行网络通信、启动新的并行线程以及抛出异常的函数和表达式。这些副作用统称为命令式编程。F# 类型系统并不严格区分执行这些操作的表达式和不执行这些操作的表达式。
如果你主要的编程经验来自于命令式语言(如 C、
超级会员免费看
订阅专栏 解锁全文
845

被折叠的 条评论
为什么被折叠?



