问题标签 [ml]

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 投票
1 回答
345 浏览

sml - ML - 数据类型和函数

我们有下一个dayatype:

和两个功能:

现在,这本书定义了另一个函数:

我不明白z函数中的内容是什么add_complex

  1. 它是 Polar 吗(意思是,我可以写 Z=polar(a,b)?如果是,那么编译器是如何知道的?意思是 - 它是否得到 az,并将其解析为极坐标变量?

  2. 如果它不是极地,那它会是什么?

0 投票
2 回答
470 浏览

list - 是否有类似 ml 的语言(标准 ml/ocaml/f#/haskell/etc),其中列表元素是选项类型

在我看来,[](空列表)和 None/Nothing 是如此相似。我想知道该语言家族中是否有任何一种具有基本列表类型,其中每个元素都是一个选项,而尾部保护是空的?

是不是(在具有不同类型的语言中没有这样做)因为它会使模式匹配列表过于冗长?

0 投票
1 回答
560 浏览

f# - The Little ML'er - F# 的良好训练?

我想了解 F# 并想知道“The Little ML'er”一书是否会有所帮助,因为 F# 是基于 OCaml 的,OCaml 是 ML 的衍生产品。或者,ML 是否与 F# 差别太大而无济于事?

谢谢。

0 投票
1 回答
384 浏览

ml - StandardML 中的一组集合的类型冲突问题

我正在阅读在线书籍“计算类别理论” http://www.cs.man.ac.uk/~david/categories/book/book.pdf,我在这本书的问题 2.10 上遇到了一些问题。特别是,与幂集的定义。

powerset 函数来自附录 D 中的答案。然后我创建了一个集合的 powerset:

为什么我可以计算一组整数的基数,而不是一组整数的基数?难道我做错了什么?

0 投票
2 回答
753 浏览

sml - SML中的函子结构扩展和多重归属

标准 ML 中是否有任何方法可以使函子输出一个结构,该结构具有传入结构的所有功能以及任何新功能。

以类似的方式,是否可以进行多重归属?在上述情况下,它将立即有用,因为您可以将函子的输出归因于原始结构的签名和指定新功能的另一个签名。

我理解做这样的事情的含义,以及为什么它可能是一个坏主意。目前,我只是在函子输出中保留了传入结构的副本——但这意味着您有一个长链“Foo.Bar.func”来访问基本功能。

谢谢

0 投票
3 回答
1195 浏览

module - 如何使用自定义模块进行编译

我正在尝试用 2 .ml 编译一个项目,其中一个是遵循这种格式的模块

我还为 myModule 创建了一个 .mli

但是现在当我在 main.ml 中调用 Mymodule.myfunction 时,我得到"Unbound value Mymodule.myfunction".

这是我的makefile(我也有标准的OcamlMakeFile):

我搜索并尝试了一些东西,但没有任何效果:(


感谢您的回答,我按照您链接的教程进行操作,但现在我遇到了 SDL 链接问题:

我正在使用这一行来编译:

0 投票
1 回答
208 浏览

f# - 在 F# 中编写相互递归函数的问题

我正在翻译 Little Mler 的一个对这种数据类型进行操作的函数

功能

但是,第二个函数出现此错误

0 投票
2 回答
151 浏览

f# - 以下哪一个是 f# 中函数定义的更好风格?

哪种风格更好,为什么?

0 投票
2 回答
236 浏览

sml - sml 语法很难查找文档

我正在尝试使用以下代码“模拟”按值传递结果函数,但似乎存在语法错误。我一直在浏览 sml 教程,但我很难弄清楚为什么这不起作用

0 投票
2 回答
2832 浏览

recursion - 用函数式语言实现快速排序

我需要在 SML 中为家庭作业实施快速排序,但我迷路了。我以前不熟悉快速排序是如何实现的,所以我阅读了它,但我读到的每个实现都是命令式的。这些看起来不太难,但我不知道如何在功能上实现快速排序。

维基百科恰好有标准 ML 中的快速排序代码(这是我的作业所需的语言),但我不明白它是如何工作的。

维基百科代码:

特别是,我不明白这一行:qs (filt lessThanP xs) @ p :: (qs (filt (not o lessThanP) xs)). filt 将返回 xs 中小于 p* 的所有内容的列表,该列表与 p 连接,后者被 cons-ed 到所有 >= p.*

*假设当 x < p 时 << (x, p) 函数返回 true。当然不必如此。

实际上,把这个写出来有助于我理解发生了什么。无论如何,我正在尝试将该 SML 函数与 wiki 的快速排序伪代码进行比较,如下所示。

函数快速排序(数组,“左”,“右”)

其中分区定义为

那么,分区到底发生在哪里?还是我错误地考虑了 SML 快速排序?