我正在尝试从创建和使用堆栈对象(修改为具有字符串): val mutable v = [""; ""]
matchprint_endline s#pop; (* error from this line *) print_endline s#pop;$ ocaml objects.ml
File &qu
假设我有一个由多个多态变量(协变)组成的类型,如下所示: [> `Ok of int | `Error of string] 让我们进一步假设,我希望将此定义分解为某种类型构造函数和一个具体的类型int我的第一次尝试是这样的: type 'a error = [> `Ok of 'a | `Error of string] 然而,使用这样的定义会产生一个非常奇怪的类型错误,它提到了一个类型变量'b,该变量没有出现在定义中的任何地方$ oc
也许我在这里很愚蠢,所以我想问的更普遍的问题是,如何在OCaml中声明对某些类型的空值的引用。通常,我会声明对自定义的空值的引用,例如,如果我有一个类型的type point = Point of (int * int),我会声明一个类似于这个let a = ref (Point (0,0))的引用另外,如果您查看标准库()中的引用堆栈‘’模块,它中没有空值。您如何处理这个问题?
我在尝试重新定义方法,我发现了这个愚蠢的例子:object end
object method get (x : b) = x我明确指定希望b类的get方法接受a b并返回a b,但方法签名是a -> a。如果我这样做(new b)#get(new a),他会非常高兴,但他真的不应该这样做。在那之后,我添加了一些愚蠢的东西:object end
我正在尝试创建一个堆栈数组,其中数组中的每个堆栈都是int类型的。如果我创建的数组是这样的:重新编码Stack<Integer>[] numbers = new Stack<Integer>[3];,那么就会出现编译错误“Cannot create a generic因此,我尝试用通配符类型而不是Integer创建堆栈数组,这样它就没有这个错误了。
但是,如果我尝试将一个int推入(通配符&q