查看复杂 OCaml 代码中的推断类型

2023-11-25

我是一名 OCaml 新手,正在使用一些我没有编写的相当复杂(至少对我来说)的 OCaml 代码。如果我可以看到某些值的推断类型,那么对理解它会有很大帮助,就像我可以通过将鼠标悬停在任何值上来使用 F# 和 Visual Studio 一样,例如:

F# showing inferred type

(截图借自http://theburningmonk.com/2010/01/learning-f-part-1/)

我想我可以分解代码并将其提供给顶层以获取类型,但是还有其他更简单的方法吗?


首先,您必须编译您的文件(foo.ml)与-annot旗帜。这会生成注释文件(foo.annot)包含有关内部所有标识符的类型信息。您可以将其包含在 makefile 或构建过程中。

Then, you need to rely on your IDE to display that information. I do this in Tuareg (the emacs mode) using Ctrl+C, Ctrl+T, which highlights the current expression and displays its type.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

查看复杂 OCaml 代码中的推断类型 的相关文章

  • 类型衰减——它是什么以及为什么会出现?

    我很惊讶类型衰减在 SO 或其他地方没有得到很好的解释 也许我没有使用正确的术语进行搜索 或者也许我没有正确理解整个事情 我的问题是 它是什么 它是如何 为什么 到达那里的 它的规则是什么 如果你想知道我为什么问 下面是我的哭泣型腐烂故事
  • 运营商部分应用

    如果我想在字符末尾添加一个空格以返回列表 如果我不传递任何参数 我将如何通过部分应用程序来完成此操作 还有类型是 space Char gt Char 由于使用 和 运算符出现 解析错误 我在末尾添加空格时遇到问题 到目前为止我所拥有的是
  • 检查对象类型是否继承抽象类型

    说我有一个对象 someDrink 它可能是类型CocaCola or Pepsi两者都继承了抽象Cola 它继承了Drink 或任何种类的饮料 我有一个方法可以返回一串最喜欢的饮料 public string PreferredDrink
  • 存在类型和类型成员的 Scala 类型推断

    以下代码无法编译 trait A F def find x Int F def fill f F Unit object TestA def test T lt A F forSome type F t T t fill t find 0
  • Assembly.GetTypes() 返回类型的顺序是什么?

    如果我获得 AppDomain 中的类型列表 这些类型是否有固有的顺序 List
  • 有人可以解释一下这个 OCaml 程序中使用的类型语法吗?

    以下类型取自这个问题 https stackoverflow com q 50586942 633183 contains an error later fixed by the OP type task Success a gt a ta
  • 推断类型和动态类型

    在编程语言中 推断类型和动态类型有什么区别 我了解动态类型 但不明白动态类型与推断类型有何不同以及有何不同 有人可以用一些例子来解释一下吗 推断类型 在编译时设置一次 实际上 推断的部分只是节省时间 因为如果编译器可以计算出类型名 则您不必
  • 在 OCaml 自定义顶层设置提示

    在 OCaml 自定义顶层中 有没有一种方法可以通过编程方式设置提示 到别的东西 我希望能够更改它以响应用户的最后一个自定义功能 有点像bash你如何设置PS1 我什至找不到 directive 来更改它 谢谢 在 toplevel top
  • 使用 ocaml List.fold_left 列表中的最后一个元素

    我可以通过以下代码找到列表的最后一个元素 let last xs a list a let rec aux xs prev match xs with gt prev x ys gt aux ys x in match xs with gt
  • 浮点型、双精度型和十进制最大值与大小的关系[重复]

    这个问题在这里已经有答案了 我在 C 中遇到了这些数据类型的大小和最大值的令人困惑的模式 在使用 Marshal SizeOf 比较这些大小时 我发现了以下结果 Float 4 bytes Double 8 bytes Decimal 16
  • 类 GADT 类型变量的未来角色?

    A 昨天的问题 https stackoverflow com q 41135212 3072788有一个定义HList 来自HList https hackage haskell org package HList 0 4 1 0 doc
  • OCaml 中的用户定义打印机

    printf fprintf等 全部接受 a转换 手册上说对于 a 用户定义的打印机 采用两个参数 并将第一个参数应用于 outchan 当前输出通道 和第二个参数 因此 第一个参数的类型必须为 out channel gt b gt un
  • OCaml 作为 C 库,hello world 示例

    我希望通过 C 调用 OCaml 代码 方法是将 OCaml 编译为包含 C 接口的静态或共享库 这一页 https caml inria fr pub docs manual ocaml intfc html似乎解释了如何为 OCaml
  • 映射存在类型列表

    我有一个要映射的存在类型对象的列表 像这样的东西 sealed abstract class IntBox val v Int case object IB1 extends IntBox 1 case object IB2 extends
  • 什么是欣德利米尔纳?

    我遇到过这个词欣德利 米尔纳 我不确定是否理解它的意思 我已阅读以下帖子 史蒂夫 叶格 动态语言的反击 http steve yegge blogspot com 2008 05 dynamic languages strike back
  • System.Web.HttpException 无法加载类型“[命名空间].???”

    这开始于无法加载类型 全局 错误 在我尝试了一些方法后 没有找到删除 Global asax 文件的位置 现在错误是无法加载类型 namespace 在哪里 是我尝试加载的每个页面的类名 该网站 在 VS2008 本地开发计算机中执行时 工
  • 获取参数类型的参数

    假设我定义了一个这样的类型 type Point Tx Ty end 然后我创建一个这种类型的变量 例如 a Point Int64 something 现在 我只知道我可以获得以下类型a by typeof a 那是 Point Int6
  • Ocaml 模块和包的区别

    我基本上是在尝试遵循这篇文章中的 stackoverflow 答案 OCaml 中 HttpRequest 的最佳模块是什么 https stackoverflow com questions 14134116 what is the be
  • 具有上限的联合类型

    我正在遵循这个问题的公认答案中提出的技术如何定义 类型析取 联合类型 https stackoverflow com questions 3508077 does scala have type disjunction union type
  • Java 泛型 - 重写抽象方法并具有子类的返回类型

    我正在尝试创建一个设置 其中一组子类覆盖超类 这个超类包含一个抽象方法 理想情况下 其返回类型是调用该方法的对象的返回类型 这样它的有效行为如下 public abstract class SuperClass public abstrac

随机推荐

  • div 清除后 IE 中的额外垂直空间

    我通过左浮动创建了一个简单的 div 网格 并在每行末尾创建了一个空的 div 这在 Firefox 中工作正常 但在 IE 中我在行之间获得了额外的垂直空间 我尝试应用 clearfix 方法 但我一定做错了什么 为什么 IE 会插入多余
  • 跟踪 Python 导入

    我的 Python 库刚刚更改了它的主模块名称foo bar to foobar 为了向后兼容 foo bar仍然存在 但导入它会引发一些警告 现在 似乎一些示例程序仍然从旧模块导入 但不是直接导入 我想找出错误的地方import陈述 有没
  • U后缀的含义

    后缀 或后缀 有什么作用U以下值的平均值 0U 100U 它代表unsigned 声明常量时 还可以指定其类型 另一个常见的例子是L 这代表long 并且您必须将其放置两次才能指定 64 位常量 例子 1ULL 它有助于避免显式强制转换
  • 如何打乱 ArrayList [重复]

    这个问题在这里已经有答案了 我需要一些帮助来编写一个对 ArrayList 进行洗牌的方法 我不知道该在我的方法中放置什么 这是我到目前为止所拥有的 我尝试使用随机方法来随机化列表中的整数 但这不起作用 有人可以告诉我该怎么做吗 这是我尝试
  • 随机数生成最安全的种子是什么?

    为随机数生成器提供种子的最安全的熵源是什么 这个问题与语言和平台无关 适用于网络上的任何机器 理想情况下 我正在寻找云环境中的机器或托管公司提供的服务器可用的资源 有两个重要的弱点需要记住 使用时间发送随机数生成器违反了CWE 337 使用
  • 如何使用 JavaScript 将所有计算的 CSS 样式从一个元素移动到另一个元素?

    我有一个外部样式表 它将某些样式应用于给定元素 我希望能够将这些样式 使用 JavaScript 完全移动到不同的元素 而无需事先了解正在应用的样式 The CSS td padding 5px div HTML td div Apply
  • Grails 域类必须与数据库绑定吗?

    对于 grails 来说 我是一个十足的菜鸟 对于 groovy 来说 我还是一个菜鸟 所以如果这是一个愚蠢的问题 我深表歉意 我正在构建一个简单的 Web 应用程序 我想根据文件系统对象 即目录结构和文件类型 而不是数据库数据来控制应用程
  • 大引号导致 Java Scanner hasNextLine() 为 false —— 为什么?

    我在让 java util Scanner 读取我在记事本中保存的文本文件时遇到问题 即使它与其他文件一起工作得很好 基本上 当它尝试读取问题文件时 它完全空手而归 hasNextLine 为假 缓冲区为空等 我将其范围缩小到这样一个事实
  • 无法在 @INC 中的 /usr/share/perl/5.14/CPAN/FirstTime.pm 中找到 local/lib.pm

    我正在尝试使用 Perl第一次我的系统是 Ubuntu 12 04 我安装了 Perl v 5 14 2 我抬头如何安装 Perl 模块 所以我开始如下 perl MCPAN e shell 向导开始配置环境 如下所示 http paste
  • Vulkan 的 VkAllocationCallbacks 使用 malloc/free() 实现

    我正在阅读Vulkan 内存分配 内存主机似乎 VkAllocationCallbacks 可以使用简单的 malloc realloc free 函数来实现 typedef struct VkAllocationCallbacks voi
  • 在 Django 模型中排序多对多关系

    假设 Django 模型中有多对多关系 例如 class GroceryList models Model items models ManyToManyField GroceryItem related name in lists cla
  • Rust 中如何在 future 和 Stream 之间进行选择?

    我刚刚开始在 Rust 中尝试 futures tokio 我可以仅使用 future 或仅使用流来完成非常基本的事情 我想知道你如何在未来和流之间进行选择 如何将 tokio 文档中的玩具问题扩展到使用tokio timer Timer进
  • 在JS内部动态加载JS[重复]

    这个问题在这里已经有答案了 我有一个动态网页 我需要在其中导入外部 JS 文件 在IF条件 在另一个 javascript 文件中 我试图寻找可行的解决方案 但没有成功 我尝试使用以下方法将 JS 文件加载到 DOMdocument cre
  • c# RawPrinterHelper 将数据发送到打印机,打印机假脱机并状态“已打印”但实际上并不打印

    我正在使用 RawPrinterHelper 类 如下所述 https support microsoft com en us help 322091 how to send raw data to a printer by using v
  • Firefox 上 Tumblr 的 Base64 字体编码

    我正在开发一个 Tumblr 主题 并且想要使用我在所有浏览器上都有的字体 由于 Firefox 不允许对其他域的 css 字体进行 http 请求 因此该字体目前无法在 Firefox 中使用 但可以在使用标准 font face 语法的
  • 您放弃 MVVM 而采用基于 UserControl 的 WPF 架构有何体验?

    我们基于以下内容构建了一个大型应用程序复合应用程序库 and MVVM using 基础设施学控制 为了节省时间并使申请更加直接 我们废除了 MVVM 要求 我们现在没有 Presenter 或 ViewModel 我们的 View 已成为
  • 为什么使用 GCC 时库链接器标志有时必须放在最后?

    我正在编写一个使用 librt 的小型 C 程序 让我感到非常惊讶的是 如果我将链接标志放在开头而不是结尾 程序将无法编译 目前 为了编译程序 我这样做 gcc o prog prog c lrt std gnu99 如果我执行以下操作 将
  • 如何获取SDCARD上存储的图片的Uri?

    我需要获取存储在 SDCARD 上的图像的 URI 当我想获取存储在可绘制对象上的图像的 Uri 时 我使用它并且效果完美 i putExtra Intent EXTRA STREAM Uri parse android resource
  • jquery Draggable +sortable 与自定义 html 的放置事件?

    将元素放置在可放置区域时更改 html 像这样的东西 http the stickman com files jquery draggable sortable html 但是当我删除元素时 会更改放置的 html 其他示例 我有 2 个列
  • 查看复杂 OCaml 代码中的推断类型

    我是一名 OCaml 新手 正在使用一些我没有编写的相当复杂 至少对我来说 的 OCaml 代码 如果我可以看到某些值的推断类型 那么对理解它会有很大帮助 就像我可以通过将鼠标悬停在任何值上来使用 F 和 Visual Studio 一样