Types 为什么在一个受歧视的联盟中使用选项类型是错误的?
我正在尝试使用判别联合创建树节点数据类型 但是,编译器给了我一个错误,说“此声明中不允许使用匿名类型变量” 错误的原因是什么Types 为什么在一个受歧视的联盟中使用选项类型是错误的?,types,f#,treenode,discriminated-union,Types,F#,Treenode,Discriminated Union,我正在尝试使用判别联合创建树节点数据类型 但是,编译器给了我一个错误,说“此声明中不允许使用匿名类型变量” 错误的原因是什么 type TreeNode = | TreeNode of int * (Some (TreeNode)) * (Some(TreeNode)) 问题在于,Some是'T option类型的构造函数之一(因此在编写表达式时可以使用它来创建选项值) 在有区别的联合的类型定义中,您需要使用类型名称-如果您希望左分支和右分支中的每个分支都可能缺失,则类型为TreeNode o
type TreeNode = | TreeNode of int * (Some (TreeNode)) * (Some(TreeNode))
问题在于,
Some
是'T option
类型的构造函数之一(因此在编写表达式时可以使用它来创建选项值)
在有区别的联合的类型定义中,您需要使用类型名称-如果您希望左分支和右分支中的每个分支都可能缺失,则类型为TreeNode option
:
type TreeNode = | TreeNode of int * (TreeNode option) * (TreeNode option)
这是一个非常基本的问题,因此我建议您查看更多信息(或几乎任何F#简介或书籍)