在 F# 中组合功能和管道运算符

Combine functionality and Pipeline operator in F#

我正在做一个项目,我想创建一个非常紧凑的方法来创建实体和属性。

我想和管道操作员一起做这件事。但是我想给这个运算符添加额外的功能。

例如:

let entity = (entity "name")
                 |>> (attribute "attr" String)
                 |>> (attribute "two"  String)

在此示例中 |>> 将是管道运算符以及向实体添加属性的功能。

我知道这行得通:

let entity = (entity "name")
             |> addAttr (attribute "attr" String)

所以我想知道的是,如果可以替换

|> addAttr

|>> 

感谢帮助

(我不知道这是否可能)

你可以简单地这样定义它:

let (|>>) e a = e |> addAttr a

为了可读性,我强烈反对在一个简单的函数就可以的情况下添加自定义运算符。您可以更改 addAttr 的编写方式,使其更易于在管道中使用:

let addAttr name attrType entity = () // return an updated entity

let e =
    entity "name"
    |> addAttr "attr" String
    |> addAttr "two"  String