Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/fsharp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
F# Can';不能让bind操作符使用受歧视的并集_F#_Operators - Fatal编程技术网

F# Can';不能让bind操作符使用受歧视的并集

F# Can';不能让bind操作符使用受歧视的并集,f#,operators,F#,Operators,我试图在代码中使用“绑定运算符”(>>=) 如果我使用操作符,我会得到一个编译错误,如果我改为“内联”操作符应该做的事情,它会工作 类型TestDI= 私有的 |一组字符串列表 |整型列表的B 具有 静态成员(>>=)(x:string列表,f:TestDI->'a)= f“a” |B->“B” //应为支持运算符“>>=”的类型,但给定了函数类型。 //您可能缺少函数的参数。 [“a”]>>=func //工作 func使用运算符时,F#按顺序查找: 作为让定义的运算符 作为静态成员——在两

我试图在代码中使用“绑定运算符”(>>=)

如果我使用操作符,我会得到一个编译错误,如果我改为“内联”操作符应该做的事情,它会工作

类型TestDI=
私有的
|一组字符串列表
|整型列表的B
具有
静态成员(>>=)(x:string列表,f:TestDI->'a)=
f“a”
|B->“B”
//应为支持运算符“>>=”的类型,但给定了函数类型。
//您可能缺少函数的参数。
[“a”]>>=func
//工作

func使用运算符时,F#按顺序查找:

  • 作为
    定义的运算符
    
  • 作为
    静态成员
    ——在两个参数类型之一上定义的运算符。这里,您传递给操作符的参数是
    string list
    TestDI->string
    ,因此它不会查看您在
    TestDI
    上定义的参数
因此,这里的解决方案是让
定义它:

type TestDI =
    private
    | A of string list
    | B of int list

let (>>=) (x: string list) (f: TestDI -> 'a) =
    f <| A x
类型TestDI=
私有的
|一组字符串列表
|整型列表的B
let(>>=)(x:string列表)(f:TestDI->'a)=
F