问题描述
我有一个被区分的并集(标记值),应该表示多项式的阶次
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