首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >utop和打印构造函数

utop和打印构造函数
EN

Stack Overflow用户
提问于 2021-04-22 22:56:20
回答 1查看 50关注 0票数 2

utop (或dune utop)中加载代码并使用#show Bin.Stop;;打印任何数据构造函数(如Bin.Stop )时,我会崩溃。

代码语言:javascript
复制
utop # #show Bin.Stop;;
>> Fatal error: Ident.rename Bin.nat
Fatal error: exception Misc.Fatal_error

~ via ? v4.12.0 took 4m41s
❯

ocaml不会崩溃。这是一个bug,还是有一个显而易见的原因,为什么这将是非法的?

代码语言:javascript
复制
(* 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
代码语言:javascript
复制
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可以正常工作

代码语言:javascript
复制
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
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-04-22 23:14:18

utop而不是ocaml中发生的toplevel指令的致命错误是utop中的错误。

实际上,utop部分地重新实现了OCaml的驱动程序逻辑,并且OCaml的代码最终可能会与底层的OCaml编译器库稍微过时。

请在以下地址报告此类问题:https://github.com/ocaml-community/utop/issues

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67215748

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档