处理函数代码中可变性的策略
本文关键字:策略 可变性 代码 处理函数 | 更新日期: 2023-09-27 18:10:22
我最近研究了FParsec的代码——Haskell Parsec解析器组合子库的F#端口。
FParsec
公共API是完全功能性的,但它依赖于支持库FParsecCS
,该支持库依赖于可变数据结构,并使用CLR不安全构造执行显式内存管理。
我认为这样做是出于性能原因。
我在函数式编程方面的经验仍然有限,所以我想请教更有经验的FP开发人员,这是否是在这种情况下采用的一种好技术。
一般来说,您应该坚持使用功能性更强的风格。少数例外情况是:
- 公共图书馆(出于性能原因(
- 应用程序的性能关键部分
- 其他语言使用的api(功能性api对于非功能性语言来说可能更难使用(
即使是这些例外,通常也有一种功能性的方法来做你试图用功能性风格做的事情(不包括api定义(,所以在转向更命令式或OO风格之前,一定要探索你的功能选项。