【发布时间】:2016-04-22 03:43:14
【问题描述】:
假设需要一种数值数据类型,其允许值在指定范围内。更具体地说,假设要定义一个整数类型,其最小值为 0,最大值为 5000。这种情况出现在很多情况下,例如在建模数据库数据类型、XSD 数据类型等时。
在 F# 中为这种类型建模的最佳方法是什么?在 C# 中,执行此操作的一种方法是定义一个结构,该结构实现范围检查重载运算符、格式设置等。此处描述了 F# 中的类似方法:http://tomasp.net/blog/fsharp-custom-numeric.aspx/
我真的不需要成熟的自定义类型;我真正想要的是具有受限域的现有类型。例如,我希望能够写出类似
的东西type MyInt = Value of uint16 where Value <= 5000 (pseudocode)
是否有在 F# 中执行此类操作的速记方法,或者是实现上述博客文章中描述的自定义数字类型的最佳方法?
【问题讨论】:
-
如果您正在寻找成熟的值相关类型,您可以查看F*。
标签: f# refinement-type