F#中的运算符重载/支持区分的联合

问题描述

我有一个被区分的并集(标记值),应该表示多项式的阶次

type Degree =
    |MinusInf
    |Fin of int

所以我有一个函数,可以给我多项式的阶数

>deg [1;2;3;4];;
val it : Degree = Fin 3

现在,我的问题是,我该如何创建一个允许我添加度数的函数,以便:

 Fin 2 + Fin 3 = Fin 5

一切顺利

解决方法

MSDN上有一篇相当详细的文章。简而言之,您想在Degree类型上定义如下函数:

type Degree =
    |MinusInf
    |Fin of int
    static member (+) (a: Degree,b: Degree) : Degree =
        match a,b with
        | Fin x,Fin y -> Fin (x+y)
        | _,_ -> MinusInf

let x = Fin 2 + Fin 3

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...