4

我目前正在阅读 Real-World Functional Programming,它简要提到了 in-fix 运算符是自定义运算符的主要好处之一。在 F# 中何时使用或不使用自定义运算符是否有任何标准?我正在寻找与此等效的答案

作为参考,这里是@JohnPalmer 从这里引用的引用:

3.8 算子定义</p>

避免在面向 F# 的库设计中定义自定义符号运算符。

自定义运算符在某些情况下是必不可少的,并且在大量实现代码中是非常有用的符号设备。对于库的新用户,命名函数通常更易于使用。此外,自定义符号运算符可能难以记录,并且由于 IDE 和搜索引擎的现有限制,用户发现查找运算符的帮助更加困难。

因此,通常最好将您的功能发布为命名函数和成员。

4

1 回答 1

3

自定义中缀运算符在某些情况下是一个不错的功能,但是当您使用它们时,您必须非常小心以保持代码的可读性 - 因此 F# 设计指南中的建议在大多数情况下都适用。如果我再次编写真实世界函数式编程,我对它们的热情会降低一点,因为它们真的应该小心使用:-)。

也就是说,有一些 F# 库很好地利用了自定义运算符,有时它们工作得很好。我认为FParsec(解析器组合库)是一种情况——尽管它们可能太多了。另一个例子是XML DSL,它使用@=.

通常,当您编写普通的F# 库时,您可能不想公开它们。但是,当您编写特定领域的语言时,自定义运算符可能会很有用。

于 2013-03-13T12:12:52.447 回答