Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
OCaml顶级模式返回<;obj>;而不是对象_Ocaml - Fatal编程技术网

OCaml顶级模式返回<;obj>;而不是对象

OCaml顶级模式返回<;obj>;而不是对象,ocaml,Ocaml,我目前在顶级模式下使用OCaml,当我试图获取输出时,顶级模式通常返回,而不是我试图查看的对象。我如何告诉OCaml显示实际对象,而不仅仅是?正如您所看到的,顶层将对象视为抽象值。要获得更多信息,您必须为该类型编写自己的打印函数,并使用#install_printer进行安装 # object method getv = 14 end;; - : < getv : int > = <obj> # let p f x = Format.fprintf f "<<

我目前在顶级模式下使用OCaml,当我试图获取输出时,顶级模式通常返回
,而不是我试图查看的对象。我如何告诉OCaml显示实际对象,而不仅仅是

正如您所看到的,顶层将对象视为抽象值。要获得更多信息,您必须为该类型编写自己的打印函数,并使用
#install_printer
进行安装

# object method getv = 14 end;;
- : < getv : int > = <obj>

# let p f x = Format.fprintf f "<< v = %d >>" x#getv;;
val p : Format.formatter -> < getv : int; .. > -> unit = <fun>
# #install_printer p;;

# object method getv = 14 end;;
- : < getv : int > = << v = 14 >>
#对象方法getv=14 end;;
-:=
#设pfx=Format.fprintf f“>”x#getv;;
val p:Format.formatter->->单位=
#安装打印机p;;
#对象方法getv=14结束;;
-:=>
注释

  • 这需要对感兴趣的值使用getter方法。无法从外部访问对象的字段

  • 打印函数是根据类型调用的。OCaml对象类型是结构化的(基于方法及其类型),而不是标称的(基于程序员建立的名称层次结构)


如您所见,顶层将对象视为抽象值。要获得更多信息,您必须为该类型编写自己的打印函数,并使用
#install_printer
进行安装

# object method getv = 14 end;;
- : < getv : int > = <obj>

# let p f x = Format.fprintf f "<< v = %d >>" x#getv;;
val p : Format.formatter -> < getv : int; .. > -> unit = <fun>
# #install_printer p;;

# object method getv = 14 end;;
- : < getv : int > = << v = 14 >>
#对象方法getv=14 end;;
-:=
#设pfx=Format.fprintf f“>”x#getv;;
val p:Format.formatter->->单位=
#安装打印机p;;
#对象方法getv=14结束;;
-:=>
注释

  • 这需要对感兴趣的值使用getter方法。无法从外部访问对象的字段

  • 打印函数是根据类型调用的。OCaml对象类型是结构化的(基于方法及其类型),而不是标称的(基于程序员建立的名称层次结构)


如您所见,顶层将对象视为抽象值。要获得更多信息,您必须为该类型编写自己的打印函数,并使用
#install_printer
进行安装

# object method getv = 14 end;;
- : < getv : int > = <obj>

# let p f x = Format.fprintf f "<< v = %d >>" x#getv;;
val p : Format.formatter -> < getv : int; .. > -> unit = <fun>
# #install_printer p;;

# object method getv = 14 end;;
- : < getv : int > = << v = 14 >>
#对象方法getv=14 end;;
-:=
#设pfx=Format.fprintf f“>”x#getv;;
val p:Format.formatter->->单位=
#安装打印机p;;
#对象方法getv=14结束;;
-:=>
注释

  • 这需要对感兴趣的值使用getter方法。无法从外部访问对象的字段

  • 打印函数是根据类型调用的。OCaml对象类型是结构化的(基于方法及其类型),而不是标称的(基于程序员建立的名称层次结构)


如您所见,顶层将对象视为抽象值。要获得更多信息,您必须为该类型编写自己的打印函数,并使用
#install_printer
进行安装

# object method getv = 14 end;;
- : < getv : int > = <obj>

# let p f x = Format.fprintf f "<< v = %d >>" x#getv;;
val p : Format.formatter -> < getv : int; .. > -> unit = <fun>
# #install_printer p;;

# object method getv = 14 end;;
- : < getv : int > = << v = 14 >>
#对象方法getv=14 end;;
-:=
#设pfx=Format.fprintf f“>”x#getv;;
val p:Format.formatter->->单位=
#安装打印机p;;
#对象方法getv=14结束;;
-:=>
注释

  • 这需要对感兴趣的值使用getter方法。无法从外部访问对象的字段

  • 打印函数是根据类型调用的。OCaml对象类型是结构化的(基于方法及其类型),而不是标称的(基于程序员建立的名称层次结构)


你能举一个你不喜欢顶层输出的交互例子吗?@Thomash请看我对答案的评论。我使用的是用O'Caml编写的软件,我试图打印对象内部的信息,对象的类型非常复杂:(int*CGC.lcrs_ket)list*((int*CGC.ket)list*((int*int)*int-Alg.lcrs_向量)list)*((int*int)*Alg.lcrs_字段)list)这里出现的非标准名称是由程序定义的类。你能给出一个你不喜欢顶级输出的交互示例吗?@Thomash请看我对答案的评论。我使用的是用O'Caml编写的软件,我试图打印对象内部的信息,对象的类型非常复杂:(int*CGC.lcrs_ket)list*((int*CGC.ket)list*((int*int)*int-Alg.lcrs_向量)list)*((int*int)*Alg.lcrs_字段)list)这里出现的非标准名称是由程序定义的类。你能给出一个你不喜欢顶级输出的交互示例吗?@Thomash请看我对答案的评论。我使用的是用O'Caml编写的软件,我试图打印对象内部的信息,对象的类型非常复杂:(int*CGC.lcrs_ket)list*((int*CGC.ket)list*((int*int)*int-Alg.lcrs_向量)list)*((int*int)*Alg.lcrs_字段)list)这里出现的非标准名称是由程序定义的类。你能给出一个你不喜欢顶级输出的交互示例吗?@Thomash请看我对答案的评论。我使用的是用O'Caml编写的软件,我试图打印对象内部的信息,对象的类型非常复杂:(int*CGC.lcrs_ket)list*((int*CGC.ket)list*((int*int)*int-Alg.lcrs_向量)list)*((int*int)*Alg.lcrs_字段)list)这里出现的非标准名称是由程序定义的类。非常感谢您的回答。我对O'Caml完全陌生,你的例子,虽然对象很简单,但对我来说有点难以理解。我试着用一个叫CleGo的软件来计算Clebsch Gordan系数。在计算过程中的某个时刻,我得到一个类型为:(int*CGC.lcrs_ketket)list*((int*CGC.ket)list*((int*int)*int Alg.lcrs_vector)list)*((int*int)*Alg.lcrs_字段)的对象