问题标签 [ocaml]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
10377 浏览

ocaml - ocaml 中的 {X with value}

我在Yacfe 示例中看到了以下函数调用:

我可以看到一个函数调用,记录初始化为第一个参数,ast第二个参数。

我不熟悉的是表单的语法:

这是什么意思?我知道一个记录可以初始化为{name=value;name=value;...},但我不熟悉{X with name=value},你能告诉我它是什么意思吗?

除了以下内容,我在Ocaml 手册中找不到任何关于合法记录值初始化的内容:

6.2.3 记录

记录值是标记的值元组。写入的记录值 { field1 = v1; ……;fieldn = vn } 将值 vi 与记录字段 fieldi 相关联,因为 i = 1 … n。当前实现支持多达 222 - 1 个字段(4194303 个字段)的记录。

如果在您的回答中包含对 OCaml 手册中相关部分的参考,我会很高兴。

0 投票
2 回答
520 浏览

ocaml - 为什么“**”没有比 OCaml 中的否定绑定更紧密?

这个问题之后,我不知道该怎么想。

在 OCaml 中,如果您执行 -1.0**2.0 之类的操作(因为您需要使用浮点数键入),您将获得 1.00。根据标准的操作顺序,结果应该是-1(在python中)。

我无法在 OCaml 中找到运算符优先级的原因或明确定义......

这是因为类型系统吗?还是 pow 下面有绑定的事实?

0 投票
8 回答
1734 浏览

regex - 有哪些奇特的解析技术?

在过去的一年里,我一直在解析扑克手牌的历史,并且在一般的解析方面学到了很多东西。

我们从正则表达式开始,但很快意识到这不会轻易扩展。我们跳过了从 ruby​​ 到 c++ 的语言,最后意识到必须改变的是算法。

我们拿起了 Boost::Spirit 并看到我们的速度以我们原始速度的 10 倍以上的顺序急剧上升。然后我们跳到 java,目前正在使用 antlr 为每个站点创建语法。这绝对是迄今为止最快的方法,而且非常彻底,这很好,因为您确切地知道您在“完整”语法方面的立场。不幸的是,我花费了大量的时间来处理这些语法——它们工作得非常好,但还不完美。

无论如何,关于手头问题的背景已经足够了——是否有任何我不知道的“异国情调”或鲜为人知的解析技术?我只知道词法分析/解析语法和其他劣质正则表达式/循环方法。

对于那些不熟悉扑克手牌历史的人,我会发布一个,以便您了解结构是什么。

我很清楚其他收集信息的方法(例如屏幕抓取和 dll 注入),但仍然需要将手牌历史转换为结构化数据,所以我只关注获取信息的方法,例如正则表达式/语法...

我想如果我找不到东西,我会用 ocamllex/ocamlyacc 重写我们的语法。

更新

仅供参考:正则表达式速度约为 60 手/秒,而语法处理 600+ 手/秒...在数据全部整理好后,整只手都转换为 xml... 需要 20-30 个正则表达式(在最后一次计数)对于您要解析的每个站点....语法方面的每个站点都有自己的语法,其中包含大量的词法分析器/解析器规则(但它的代码量仍然较小)

我确实有龙书并且一直在阅读它——这让我对使用 ocamllex/ocamlyacc 失去了兴趣……速度是这里游戏的名称……

0 投票
2 回答
322 浏览

graphics - 如何复制 Gdk.image?

是否可以使用 lablgtk2 为 Ocaml 制作 Gdk.image 对象的副本?我试图找到“复制”或“克隆”方法但失败了。

0 投票
1 回答
617 浏览

c - 是否可以从 OCaml 调用 C 函数并有效地传递一个巨大的数组?

我正在考虑在新应用程序中使用 OCaml 和 C 代码之间的组合。从 Ocaml 调用 C 代码似乎很简单:

但是,反过来(从 C 调用 OCaml)似乎也更复杂:

本页示例)

特别是,它涉及复制。

谁能告诉我是否可以允许从两种语言访问数据结构?所以函数只能传递指向结构的指针,但两种语言都可以读取它。

目标是使用 OCaml 完成所有操作,然后以有效的方式将数据传递到 C 环境。

谢谢!

0 投票
2 回答
839 浏览

opengl - 来自维基百科的 Ocaml OpenGL 示例无法编译

我正在尝试开始一些基本的 Ocaml 编程。首先,我想从 wikipedia 运行 OpenGL 示例。 http://en.wikipedia.org/wiki/Ocam l

给定的编译器指令

只是原因和第 2 行的错误,说 Glut.init 未绑定。

我在 cygwin 上运行它,这可能是问题的根源。但是有人知道如何解决吗?

0 投票
3 回答
378 浏览

ocaml - 在纯函数式 ML 中进行 N 维游走?

这个想法是遍历多个维度,每个维度都定义为一个范围

所以函数类似于fun foo y xfun foo z y x可以应用于整个正方形 X Y 或立方体 X Y*Z。

SML/NJ 不喜欢我在下面的实现:

这是代码:

这种构造甚至可能吗?

欢迎任何指针。

0 投票
16 回答
14805 浏览

programming-languages - 学什么?Lisp 或 OCaml 或...?

我已经掌握了几种语言(按专业知识的粗略顺序排列):Python、C、C++、PHP、Javascript、Haskell、Java、MIPS、x86 汇编程序。但是自从我学会了一个新的已经快 2 年了,我开始感到痒了。我有几个标准:

  1. 必须(重复:必须)有一个免费的 Linux 实现
  2. 应该不同于我已经知道的语言。换句话说,它应该具有让我思考以新方式解决问题的功能。
  3. 应该有一定的实用潜力。它不需要成为下一个 Java,但这排除了 Brainf* 和莎士比亚 :) 我真的不在乎它有多少职位发布,但现实世界的应用程序和库是一个加分项。
  4. 至少应该有足够的免费学习材料让我开始学习。

我在想 Lisp(CL?别的东西?)或 OCaml。我已经有一些使用 Haskell 的函数式语言的经验(是的,我知道 Lisp/OCaml 是多范式)。我不是专家——例如来自 Real World Haskell 的部分代码仍然会扭曲我的大脑,但我了解基本概念和一些高级概念(函子、单子)。

选择哪一个?我忽略了任何其他语言?另外,能否请您包括一些有用的链接到好书/教程等。

0 投票
1 回答
413 浏览

winapi - Windows 上的 ocamlopt 不会生成可执行文件

这是一个简单的 OCaml 程序:helloworld.ml

我正在使用 OCaml 3.11.0(内置 MSVC)、VS 2008,当然还有FlexDLL

这是我编译它的方法(从 VS 2008 shell 运行): ocamlopt helloworld.ml -o helloworld

没有创建可执行文件。有什么不对?不过,该程序在 Linux 上编译并运行。

0 投票
2 回答
1756 浏览

iphone - 如何将 OCaml 与 iPhone API 接口?

我想开始为 iPhone 开发应用程序,但我真的很想使用 OCaml 而不是 Objective-C。经过一番谷歌搜索,似乎这绝对是可能的,但我还没有找到任何实际编译的代码片段。

是否可以使用 OCaml 编写 iPhone 应用程序?如果是这样,您能否提供一个片段来演示如何从 OCaml 调用 Cocoa API?