问题标签 [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 投票
3 回答
5495 浏览

list - Ocaml List:实现追加和映射功能

我目前正在尝试扩展朋友的 OCaml 程序。这是一些数据分析所需的大量函数。由于我不是真正的 OCaml 破解者,因此我目前陷入(对我而言)奇怪的 List 实现:

我发现这实现了某种“惰性”列表,但我完全不知道它是如何工作的。我需要基于上述类型实现一个 Append 和一个 Map 函数。有没有人知道如何做到这一点?

任何帮助将不胜感激!

0 投票
2 回答
493 浏览

oop - 基本 OCaml OOP 问题

我正在尝试学习 oCaml,但我对以下程序无效的原因有疑问。

我在尝试编译程序时收到的错误是:

我对为什么特别感兴趣:

是无效的。感谢任何(我的意思是任何)帮助。

0 投票
2 回答
690 浏览

oop - 用于将自定义对象作为参数传入的 OCaml 语法

我正在尝试掌握 OCaml 语言语法,但在应用一些 OOP 结构时遇到了一些麻烦。我使用以下代码的目标是拥有一个继承自虚拟类 foo 的类 bar。虚拟类包含三个虚拟方法,我希望将“玩家”对象的实例作为参数。当我编译下面的代码时,我得到了错误:方法 doThis 有类型 'a -> 'b 但应该有类型 player 。这是什么意思(记住,我是新手),我该如何纠正它?

谢谢!

0 投票
3 回答
998 浏览

oop - OCaml 结构类型和列表

我在使用 OCaml 中的列表时遇到问题。我读过相互矛盾的陈述,说明是否可以在运行时修改列表。可以在运行时使用 cons 运算符吗?

此外,为什么允许杜宾犬(见下文)出现在吉娃娃名单中?如何将另一只吉娃娃添加到列表中(如最后一行所尝试的)?

0 投票
2 回答
665 浏览

oop - 在 OCaml 中即时创建对象

我正在尝试通过使用编译代码而不是顶级代码来学习 OCaml;然而,网上的大部分示例代码似乎更适合后者。

我想在下面的对象的方法中创建一个新的 Foo 。此代码无法编译,引用 doFooProc 定义的语法错误。

此外,“let”语法在类定义中似乎并不友好。这是为什么?

如何在 doFooProc 方法中创建类 foo 的新对象并调用实例化的 foo 的 process 命令?

0 投票
3 回答
1949 浏览

ocaml - OCaml 中的查找表

我想在 OCaml 中创建一个查找表。该表将有 7000 多个条目,在查找时(通过 int)返回一个字符串。用于此任务的适当数据结构是什么?表是否应该从基本代码中外部化,如果是这样,如何“包括”查找表以便从他/她的程序中访问?

谢谢。

0 投票
2 回答
923 浏览

ocaml - Ocaml noobie Q——如何使用累加参数?

我正在尝试通过解决Project Euler的问题 18来学习 Ocaml。我知道我想做什么,只是不知道该怎么做。

我有三个列表:

我想将数字 list2 添加到 list1 中的最大相邻数字,IOW 我将添加 6+2、7+3、8+4 和 9+5 以获得列表 [8;10;12;14]。列表 line[] 是一个虚拟变量。

这是我的第三次尝试:

运行此程序后,我希望 line = [9999;8;10;12;14] 而不是 line = [9999]。OTOH,fu 打印为 [999914]。

当我单步执行代码时,代码按预期执行,但没有任何变化;else 块中的累加器永远不会被修改。

我就是不懂这种语言。任何人都可以建议吗?

0 投票
2 回答
1024 浏览

f# - 用 OcamlYacc / FsYacc 表示可选语法和重复

我正在尝试在词法分析/解析语法方面建立一些技能。我正在回顾我为 SQL 编写的一个简单的解析器,但我对它并不完全满意——似乎应该有一种更简单的方法来编写解析器。

SQL 让我大吃一惊,因为它有很多可选的标记和重复。例如:

相当于:

ONand子句是可选的WHERE,可以出现多次。我在解析器中处理这些如下:

换句话说,我通过将可选语法分解为单独的规则来处理可选语法,并使用递归处理重复。这行得通,但是它将解析分解为一堆小子例程,并且很难看出语法实际代表什么。

如果我可以在括号内指定可选语法并使用 * 或 + 重复,我认为编写起来会容易得多。这会将我的 whereClause 和 joinList 规则减少到以下内容:

我认为这种形式容易阅读,并且更直观地表达了它试图捕捉的语法。不幸的是,我在 Ocaml 或 F# 文档中找不到任何支持此表示法或类似内容的内容。

在 OcamlYacc 或 FsYacc 中是否有一种简单的方法来表示具有可选或重复标记的语法?

0 投票
2 回答
1381 浏览

java - OCaml 中的经典单例实现

我正在尝试在 OCaml 中概念化 Singleton 设计模式(qua Java),并且曾经看到实例提到函子或模块,我在 GoF 工作的概念证明中都没有使用它们。基本上,我想使用 OCaml 重新创建以下功能:

如果没有模块或函子,这可能吗?

0 投票
3 回答
1925 浏览

ocaml - 有关于 OCaml Sdl 的文档吗?

我正在为此使用 OCaml SDL 开发一个小游戏。我没有找到任何关于它的文档,所以我有三个问题:

  1. 我想在windows下使用OCaml SDL,所以任何人都可以帮助我如何编译它,(我已经放弃并在虚拟PC上安装了linux)
  2. 有没有关于如何使用 OCaml SDL 的文档?
  3. 我正在使用一个 800x600 的窗口,我想在里面表示一些图形,例如那个像素表示背景,另一个表示岩石等等,那个(800x600)窗口的最佳表示是什么?作为一般情况,我使用的是 800 * 600 单元格的数组。