2

我最近研究了FParsec的代码,它是 Haskell Parsec解析器组合库的 F# 端口。

FParsec公共 API 功能齐全,但它依赖于FParsecCS依赖于可变数据结构的支持库,并使用 CLR 不安全构造执行显式内存管理。

我认为这样做是出于性能原因。

我在函数式编程方面的经验仍然有限,所以我向更有经验的 FP 开发人员询问这是否是在这种情况下采用的一种好技术。

4

1 回答 1

4

一般来说,你应该坚持更实用的风格。一些例外是:

  1. 公共图书馆(出于性能原因)
  2. 应用的性能关键部分
  3. 其他语言使用的api(函数式api可能更难被非函数式语言使用)

即使对于这些例外情况,通常也有一种函数式方法可以使用函数式样式(不包括 api 定义)来执行您尝试执行的操作,因此请确保在转向更命令式或 OO 样式之前探索您的函数选项。

于 2013-04-24T00:38:59.213 回答