utop 和打印构造函数
utop and printing constructors
在 utop
(或 dune utop
)中加载代码并使用 #show Bin.Stop;;
打印任何数据构造函数(如 Bin.Stop
时,我遇到了崩溃。
utop # #show Bin.Stop;;
>> Fatal error: Ident.rename Bin.nat
Fatal error: exception Misc.Fatal_error
~ via v4.12.0 took 4m41s
❯
虽然ocaml
不会崩溃。
这是错误还是有明显的非法原因?
(* SOTypeLevelNat.ml *)
module Bin : sig
type stop = Qasdpaokdsap
type 'a zero = Sasddkasdo
type 'a one = Zoldjsfoij
type _ nat =
| Stop : 'stop nat
| Times2 : 'n nat -> 'n zero nat
| Times2Plus1 : 'n nat -> 'n one nat
end = struct
type stop = Qasdpaokdsap
type 'a zero = Sasddkasdo
type 'a one = Zoldjsfoij
type _ nat =
| Stop : 'stop nat
| Times2 : 'n nat -> 'n zero nat
| Times2Plus1 : 'n nat -> 'n one nat
end
utop # #use "SOTypeLevelNat.ml";;
module Peano :
sig
type 'a s = S
type z = Z
type 'n nat = Zero : 'a nat | Succ : 'n nat -> 'n s nat
end
module Bin :
sig
type stop = Qasdpaokdsap
type 'a zero = Sasddkasdo
type 'a one = Zoldjsfoij
type _ nat =
Stop : 'stop nat
| Times2 : 'n nat -> 'n zero nat
| Times2Plus1 : 'n nat -> 'n one nat
end
打印类型,比如说,nat
工作得很好
utop # #show Bin.nat;;
type nonrec _ nat =
Stop : 'stop Bin.nat
| Times2 : 'n Bin.nat -> 'n Bin.zero Bin.nat
| Times2Plus1 : 'n Bin.nat -> 'n Bin.one Bin.nat
发生在 utop
而不是 ocaml
的顶级指令的致命错误是 utop
.
中的错误
事实上,utop
部分重新实现了 OCaml REPL 的驱动程序逻辑,并且 utop 的代码最终可能会与底层 OCaml 的编译器库稍微过时。
请在以下位置报告此类问题:https://github.com/ocaml-community/utop/issues
在 utop
(或 dune utop
)中加载代码并使用 #show Bin.Stop;;
打印任何数据构造函数(如 Bin.Stop
时,我遇到了崩溃。
utop # #show Bin.Stop;;
>> Fatal error: Ident.rename Bin.nat
Fatal error: exception Misc.Fatal_error
~ via v4.12.0 took 4m41s
❯
虽然ocaml
不会崩溃。
这是错误还是有明显的非法原因?
(* SOTypeLevelNat.ml *)
module Bin : sig
type stop = Qasdpaokdsap
type 'a zero = Sasddkasdo
type 'a one = Zoldjsfoij
type _ nat =
| Stop : 'stop nat
| Times2 : 'n nat -> 'n zero nat
| Times2Plus1 : 'n nat -> 'n one nat
end = struct
type stop = Qasdpaokdsap
type 'a zero = Sasddkasdo
type 'a one = Zoldjsfoij
type _ nat =
| Stop : 'stop nat
| Times2 : 'n nat -> 'n zero nat
| Times2Plus1 : 'n nat -> 'n one nat
end
utop # #use "SOTypeLevelNat.ml";;
module Peano :
sig
type 'a s = S
type z = Z
type 'n nat = Zero : 'a nat | Succ : 'n nat -> 'n s nat
end
module Bin :
sig
type stop = Qasdpaokdsap
type 'a zero = Sasddkasdo
type 'a one = Zoldjsfoij
type _ nat =
Stop : 'stop nat
| Times2 : 'n nat -> 'n zero nat
| Times2Plus1 : 'n nat -> 'n one nat
end
打印类型,比如说,nat
工作得很好
utop # #show Bin.nat;;
type nonrec _ nat =
Stop : 'stop Bin.nat
| Times2 : 'n Bin.nat -> 'n Bin.zero Bin.nat
| Times2Plus1 : 'n Bin.nat -> 'n Bin.one Bin.nat
发生在 utop
而不是 ocaml
的顶级指令的致命错误是 utop
.
事实上,utop
部分重新实现了 OCaml REPL 的驱动程序逻辑,并且 utop 的代码最终可能会与底层 OCaml 的编译器库稍微过时。
请在以下位置报告此类问题:https://github.com/ocaml-community/utop/issues