在f#中结合功能和管道操作符



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

我想对管道操作符这样做。但是我想为这个操作符添加额外的功能。

例如:

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

在本例中|>>将是一个管道操作符,并具有向实体添加属性的功能。

我知道这是有效的:

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

所以我想知道的是,是否有可能替换

|> addAttr

|>> 

Thanks for the help

(我不知道这是否可能)

您可以简单地这样定义:

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

最新更新