是否可以定义一个将多个函数应用于单个参数的F#运算符(几乎与||>运算符相反)?

Mar*_*k R 6 f#

我尝试这样做是在这里(原谅for循环 - 我只是好奇,看看这是否可能):

let (|>>) a (b : ('a -> unit) list) = 
    for x in b do
        x a
Run Code Online (Sandbox Code Playgroud)

但是当我尝试使用它时,我得到了错误 在此输入图像描述

Cha*_*ert 5

None of the types error如果您尝试使用的功能在文件的下方定义或未正确导入,则会出现该消息.否则,您的函数定义似乎没问题.


The*_*Fox 5

我不鼓励使用自定义操作符.我认为应该很少使用它们.这个似乎不够通用,不值得定义,并且可能使代码难以阅读.这是一个替代方案:

[ printf "%A"; printfn "%A" ] |> List.iter ((|>) 1)
Run Code Online (Sandbox Code Playgroud)

但是,在内联中写出运算符定义会更清晰,更短:

for f in [ printf "%A"; printfn "%A" ] do f 1
Run Code Online (Sandbox Code Playgroud)