我不确定为什么F#似乎允许在没有任何构造函数的情况下定义类.我的意思是,实例化该类的对象是不可能的.语言规范不应该将此视为非法行为吗?
例如,我可以定义类
type myClass =
class
member this.x = 0
end
Run Code Online (Sandbox Code Playgroud)
myClass 似乎有类型
type myClass =
member x: int
Run Code Online (Sandbox Code Playgroud)
但它不可实现.
下面的代码给出了一个错误:
Inductive mylist {A : Set} : Set :=
| mylist_Nil
| mylist_Cons : A -> mylist A -> mylist A.
Run Code Online (Sandbox Code Playgroud)
错误是“Set”类型的“mylist A”不能应用于术语“A”:“Set”。如果我将 "{A:Set}" 更改为 (A:Set) 那么它工作正常。
花括号是什么意思?谢谢!