如何运行 OCaml + Core 脚本?

2024-01-07

我正在尝试 Real World OCaml 这本书。它讨论了安装 OPAM,然后是 OCaml 和 Jane Street Core。我按照书中的说明正确加载了 utop,以便它自动加载 Core。

没有 Core,我可以简单地运行通用 OCaml 脚本ocaml script.ml无需编译。但如果脚本使用 Core,则这不起作用。如果我想运行基于 Core 的 OCaml 脚本而不进行编译,正确的命令是什么?


运行依赖于其他库的脚本需要您告诉编译器在哪里可以找到这些库。你最好的选择是使用ocamlscript,您也可以使用 OPAM 安装。做就是了opam install ocamlscript。然后阅读有关 ocamlscript 的内容here http://mjambon.com/ocamlscript.html。这是一个工作示例:

$ cat a.ml
#! /usr/bin/env ocamlscript
Ocaml.ocamlflags := ["-thread"];
Ocaml.packs := [ "core" ]
--
open Core.Std

let () = print_endline "hello"

确保a.ml已设置可执行位。然后运行它:

$ ./a.ml
hello

作为奖励,ocamlscript还可以编译为本机代码,因此您可以获得高性能脚本。

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

如何运行 OCaml + Core 脚本? 的相关文章

  • 模式匹配和 if-else 之间的性能差异

    为什么 OCaml 可以为模式匹配生成高效的机器代码 而不是为 if else 测试生成高效的机器代码 我在读 Real World OCaml 时发现this https realworldocaml org v1 en html lis
  • OCaml 中的多态性 - 特别、参数、包含/子类型

    我在理解不同类型的多态性时遇到问题 特别是关于 OCaml 的多态性 我知道多态性允许 OCaml 中表示为 a 的多种类型 但我不明白不同类型的多态性是什么 如果有人能用相对低级的语言给我解释那就太棒了 临时 参数 包含 子类型 这是一个
  • 在 OCaml 中编写 main 脚本?

    如何在 OCaml 中模拟这个 Python 习惯用法 if name main main See 罗塞塔代码 http rosettacode org wiki ScriptedMain Python其他编程语言的示例 Ocaml 中没有
  • OCaml 的并行化能力状况如何?

    我对在项目中使用 OCaml 很感兴趣 但是我不确定它的并行化功能在哪里 OCaml中有消息传递能力吗 OCaml 是否能够有效地使用 1 个以上的 CPU 我读到的关于这个主题的大部分内容都是在 2002 年至 2006 年写的 我没有看
  • 数据中的是什么?

    我使用OCaml版本4 02 3 我定义了一个类型self type self Self of self type self Self of self 及其实例s let rec s Self s val s self Self
  • llvm OCaml 绑定

    我正在研究 llvm OCaml 绑定 我通过 opam 安装了 llvm 包 opam install llvm 当我在 utop 中使用 llvm 时 出现以下错误 require llvm Error The external fun
  • 在哪里可以找到 OCaml Option 模块?

    我的意思是这个模块 Option http ocaml lib sourceforge net doc Option html 我找不到它 open Option给我Error Unbound module Option并且没有 optio
  • 什么才是真正性能更高的? Haskell 或 OCaml [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • OCaml 中 let rec 的限制

    这几天我在学习OCaml 发现了这个 OCaml 对于可以放在 let 记录右侧的内容有限制 像这个 let memo rec f norec let rec f memoize fun x gt f norec f x in f Erro
  • 使用只有一个元组值的变体类型构造函数

    type foo Foo of int int let t 1 2 Foo t Error The constructor Foo expects 2 argument s but is applied here to 1 argument
  • OCaml 中的线性类型

    Rust http www rust lang org 有一个线性类型系统 有什么 好的 方法可以在 OCaml 中模拟这个吗 例如 当使用 ocaml lua 时 我想确保仅当 Lua 处于特定状态 堆栈顶部的表等 时才调用某些函数 Ed
  • OCaml 中类型和模块相等的规则是什么

    我无法理解 OCaml 中模块的平等性 函子应该是适用的 这就是互联网所声称的 但这有时似乎会失败 而且我不太明白其背后的一般规则 这是我的示例代码 module type PT sig end module P struct end le
  • OCaml:为什么重命名类型会失败并显示“它们的种类不同”

    我正在为成对的类型见证和见证类型的值构建一个通用容器 我想将其用于几种不同的类型 这会给我带来错误 因为这些类型的名称都相同 所以我尝试重命名函子结果中的类型 如下所示 module type Witness sig type a key
  • OCaml 3.12 中的一流模块:它们将使哪些事情变得更容易(或可能)?

    我听说 OCaml 3 12 中即将推出 一流模块 他们将提供什么优势 哪些孩子的事情会变得更容易 他们试图解决什么问题 一个简单的例子就足够了 这只是一个可能的应用程序 但一流的模块可以轻松地对存在类型进行编码 基本上是一个模块打包存在类
  • 使用 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
  • 链接“let”语句时使用“and”还是“in”更好?

    我意识到这可能是一个愚蠢的问题 但是 如果我把一堆let不需要需要了解彼此价值观的语句 使用是否更好and or in 例如 以下哪一个更可取 如果有 let a foo and b bar and c baz in etc or let
  • 使用fold_left/right反转OCaml中的列表

    更新 解决方案 感谢 jacobm 的帮助 我想出了一个解决方案 Folding Recursion let reverse list 3 theList List fold left fun element recursive call
  • 如何使用 Frama-c Value 插件的 Value.Eval_expr、Value.Eval_op 等模块中的函数

    我正在尝试创建一个 frama c 插件 该插件依赖于 Frama c Value 插件 我想获取并打印 C 源代码中所有左值的值集 为了做到这一点 我想使用 Value Eval exprs Value Eval op 等中可用的函数 例
  • 如何在 Ocaml 中表示一个简单的有限状态机?

    我用 C 和 Java 编写过一些状态机 但从未用过像 Ocaml 这样的函数式语言 问题是我不知道我是否可以从对象语言版本中调整代码 因为在 Ocaml 中记录和变体比类更强大 所以 我需要一个事件驱动的有限状态机 像 UML 中的分层结
  • 您能给我解释一下 OCaml 函子吗? [复制]

    这个问题在这里已经有答案了 可能的重复 在函数式编程中 什么是函子 https stackoverflow com questions 2030863 in functional programming what is a functor

随机推荐

  • NSTask 阻塞主线程

    我正在使用 NSTask 但是当我启动任务时 它会阻塞主线程 因此我无法更新它 直到任务结束 这是我的代码 NSString hostsforping google es pingdata NSTask alloc init pingdat
  • 使用 ListFragment 填充自定义视图列表

    我正在尝试使用片段在列表视图中显示元素 我创建了自定义视图 如下所示 list row xml 的图形表示 列表行 xml
  • 如何恢复过期的令牌[AWS Cognito]?

    我的网站使用 AWS 1 小时后 令牌就会过期 用户几乎无法执行任何操作 现在我正在尝试像这样刷新凭据 function getTokens session return accessToken session getAccessToken
  • 身份服务器单点注销,也从服务器注销

    这是我在依赖方中使用的注销代码 FederationConfiguration cfg FederatedAuthentication FederationConfiguration var fam FederatedAuthenticat
  • 使用 Marionette.ItemView 获取没有模型的视图?

    是否常规使用Marionette ItemView对于没有特定的视图类model与他们相关的财产 As Marionette View并不意味着可以直接使用 它看起来像一个ItemView作为具有方便的默认值和绑定的视图类是有意义的 或者
  • PHP PDO Sqlsrv 始终以字符串形式返回每个值

    如何从具有正确字段类型的数据库中获取值 我使用 PDO Sqlsrv 从数据库获取数据 并且总是以字符串形式接收数据 如下所示 customer id 1 My customer id字段类型应该是整数customer id 1 But p
  • SQL Server:如何将所有行的数据作为 Json 对象查询到其他列旁边?

    I have data like this I want to query result like this 这是我的代码 SELECT PML CODE PML NAME ENG SELECT PML ID PML NO PML CODE
  • 签入/签出文件时 Sharepoint“不支持的段类型”

    我想使用OneDrive REST API 上的签出 签入功能 https learn microsoft com en us onedrive developer rest api api driveitem checkout https
  • 可以包含 javascript 的 HTML 属性

    我正在寻找一个包含所有 html 属性的简单列表 这些属性可以包含在执行操作时自动运行的 javascript 我知道这在浏览器和版本之间会有所不同 但我宁愿更安全 也不愿后悔 我目前知道以下 javascript 属性 onload on
  • 应用程序因内存问题而终止

    在我的应用程序中 我收到此错误 来自调试器的消息 由于内存问题而终止 并且应用程序崩溃 我正在显示一个网页 但问题是内存使用量不太高 应用程序使用的内存不到 100 MB 仅当我在 iPhone 6 Plus 中运行该应用程序时 该应用程序
  • 单个主机上的多个 glibc 库

    我的 Linux SLES 8 服务器当前有 glibc 2 2 5 235 但我有一个程序无法在此版本上运行并且需要 glibc 2 3 3 是否可以在同一主机上安装多个 glibc 这是我在旧 glibc 上运行程序时遇到的错误 mya
  • 使用 javascript 读取多个同时键盘输入

    我注意到 JavaScript 中键盘输入有一些奇怪的行为 我可能在这里遗漏了一些非常明显的东西 但是是否有某种关于允许同时按下哪些键的规则 我使用布尔变量来保存四个键中每个键的状态 如下所示 这允许同时按下许多键 硬件允许 var up
  • 恢复 Git 存储库中已删除的文件夹

    我已经删除了文件夹中的所有内容 并且该文件夹为空 我的远程仓库中仍然有一份副本 但是当我做了一个git pull它没有放回已删除的文件不是应该这样做吗 所以我做了一些研究 发现你可以通过执行以下操作来恢复文件git checkout
  • 一次读取每个字符 - C

    对于下面的question https users cs cf ac uk Dave Marshall C node7 html SECTION00730000000000000000 练习 12336 从程序的标准输入中一次读取一个字符的
  • 将整数转换为随机但确定性可重复的选择

    如何将无符号整数 表示用户 ID 转换为看起来随机但实际上是确定性可重复的选择 必须以相等的概率选择该选项 无论输入整数的分布如何 例如 如果我有 3 个选择 即 0 1 2 例如 用户ID 123可以总是被随机分配选择2 而用户ID 23
  • git 日志格式中可选的缩进换行符

    我一直在摆弄git一些的别名log命令 我已经拥有了大部分我想要的东西 信用在这里 https stackoverflow com a 9074343 241211 但我在一件事情上遇到了麻烦 当我打电话时 git log graph fo
  • Android JNI - 调用 AttachCurrentThread 而不使用 DetachCurrentThread

    我一直在阅读有关 JNI 的内容 似乎无法弄清楚如果线程启动 gt 调用 AttachCurrentThread gt 进行一些 JNI 调用 gt 线程退出会发生什么 理想情况下 我们应该在线程退出之前调用 DetachCurrentTh
  • 通过C#发送截图

    我通过该代码捕获屏幕截图来保存 Graphics Grf Bitmap Ekran new Bitmap Screen PrimaryScreen Bounds Width Screen PrimaryScreen Bounds Heigh
  • Java中的双重比较技巧

    C 允许您将两个整数比较合并为一个以进行范围检查 例如 unsigned X lt unsigned Upper 当 0 lt X lt Upper Java 语言没有无符号类型 您是否找到了一种方法来获得相同的效果 使用单个比较并且没有太
  • 如何运行 OCaml + Core 脚本?

    我正在尝试 Real World OCaml 这本书 它讨论了安装 OPAM 然后是 OCaml 和 Jane Street Core 我按照书中的说明正确加载了 utop 以便它自动加载 Core 没有 Core 我可以简单地运行通用 O