假设需要一种数值数据类型,其允许的值落在指定范围内。更具体地说,假设要定义一个最小值为 0、最大值为 5000 的整数类型。这种情况在很多情况下都会出现,例如在对数据库数据类型、XSD 数据类型等进行建模时。
在 F# 中对此类类型进行建模的最佳方法是什么?在 C# 中,实现此目的的一种方法是定义一个结构体,该结构体实现范围检查重载运算符、格式设置等。 F# 中的类似方法如下所述:http://tomasp.net/blog/fsharp-custom-numeric.aspx/ http://tomasp.net/blog/fsharp-custom-numeric.aspx/
我实际上并不需要成熟的自定义类型;我真正想要的是具有受限域的现有类型。例如,我希望能够写出类似的东西
type MyInt = Value of uint16 where Value <= 5000 (pseudocode)
在 F# 中是否有一种简写方法可以执行此类操作,或者是实现上述博客文章中描述的自定义数字类型的最佳方法吗?
您指的是类型理论中所谓的细化类型,正如丹尼尔所指出的,寻找F* http://rise4fun.com/FStar/tutorial/guide。但这是一个研究项目。
至于使用 F# 执行此操作,除了 Tomas 的帖子之外,还可以查看使用类型进行设计 http://fsharpforfunandprofit.com/series/designing-with-types.html series.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)