何时使用自定义操作符的标准



我目前正在阅读《真实世界的函数式编程》,它简要地提到了自定义操作符的主要优点之一是内置操作符。在f#中何时使用或不使用自定义操作符有什么标准吗?我正在寻找与此相同的答案。

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

3.8操作符定义

避免在面向f#的库设计中定义自定义符号操作符。

自定义操作符在某些情况下是必需的的情况下是非常有用的符号设备实现代码体。对于库的新用户,命名为函数通常更容易使用。另外自定义符号操作人员可能很难记录,而用户则更难记录查找操作符的帮助,由于IDE和搜索引擎。

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

自定义中义运算符在某些情况下是一个很好的特性,但是当你使用它们时,你必须非常小心地保持你的代码的可读性——所以f#设计指南中的建议在大多数情况下都适用于。如果我再写一次真实世界的函数式编程,我会对它们少一点热情,因为它们真的应该小心使用:-)。

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

通常,当您编写普通 f#库时,您可能不希望暴露它们。但是,当您编写域特定语言时,自定义操作符可能很有用。

最新更新