具有如下自定义变体类型:
type yolo =
| A of string
| B of yolo
| C of yolo * yolo
| D of yolo * yolo
我还有一个函数可以对yolo
类似于此的实例执行一些操作:
let rec swag y =
match y with
| A _ -> 1
| B _ -> 2
| C (left,right) -> (swag left) + (swag right)
| D (left,right) -> (swag left) + (swag right)
由于 caseC
和的操作D
完全相同,我想将它们合并,这可能吗?
像这样的模式
pat1 | pat2
匹配以下两种模式之一:当然,这两个模式必须将相同的名称(在本例中为左和右)绑定到相同的类型。
杰弗里的回答是非常正确的。您可能希望考虑,如果您有多个编码相同信息的构造函数,其中构造函数的名称只是用作标志,您可能会更直接地表示这种关系。例如
进而:
您也可以
function
在此处使用关键字。