如何解决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
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。