功能编程中的一种设计方法是使非法国家无法代表.我总是看到这是通过类型的结构来完成的,但类型的价值呢?
如果我有一个名为Email的字符串怎么办?我只希望它保留一个有效的电子邮件地址(针对某些正则表达式进行检查)?如何以功能方式(不使用OOP)执行此操作?
F#可以很容易地定义类型
type coords = { X : float; Y : float }
Run Code Online (Sandbox Code Playgroud)
但是如何在不进入更详细的类定义语法的情况下为构造函数定义约束/检查参数?例如,如果我想从(0,0)开始coords或抛出异常.
此外,如果我将我的定义更改为类,我需要实现Equals()等所有我不想要的样板代码(以及我在C#中试图摆脱的那些).