问题标签 [sml]

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 回答
980 浏览

functional-programming - SML 中的原型设计功能

我有两个函数,fg,它们以递归方式相互调用。不幸的是,当f调用它时g,它还没有被声明,所以我得到一个“未绑定变量”错误。我如何在 SML/NJ 中对这个函数进行原型设计(或任何等效词汇)?

0 投票
3 回答
1750 浏览

queue - 如何在 SML/NJ 中使用队列库

我看到 SML/NJ 包含一个队列结构。我不知道如何使用它。如何使用 SML/NJ 提供的附加库?

0 投票
9 回答
15256 浏览

f# - Explaining pattern matching vs switch

I have been trying to explain the difference between switch statements and pattern matching(F#) to a couple of people but I haven't really been able to explain it well..most of the time they just look at me and say "so why don't you just use if..then..else".

How would you explain it to them?

EDIT! Thanks everyone for the great answers, I really wish I could mark multiple right answers.

0 投票
1 回答
426 浏览

sml - SML 在位级别比较文件

我正在尝试使用 SML 比较目录中的文件。使用 TextIO 库相当容易,但我需要在位级别比较文件。也就是说,二进制比较。我正在使用与此类似的功能:

列出给定目录中的所有文件。但是现在,我需要查看每个文件中的位。有什么建议么?

0 投票
2 回答
1020 浏览

functional-programming - 如何在标准 ML 中打印多态值?

有没有办法在标准 ML(特别是 SML/NJ)中打印多态值?我有一个多态函数没有做我想要的,并且由于在 SML 中调试的糟糕状态(请参阅调试生产功能程序的任何真实世界经验?),我想看看它在做什么旧print的。一个简单的例子是(在提示下):

其他建议表示赞赏。与此同时,我将继续盯着有问题的代码提交。

更新

我能够找到错误,但问题仍然存在于防止未来痛苦和痛苦的希望中。

0 投票
2 回答
18412 浏览

ocaml - SML 和 OCaml 有什么区别?

是什么让这两种 ML 方言区分开来?

0 投票
7 回答
8008 浏览

prolog - SML 是做什么用的?

SML在现实世界中的用途是什么?

它的实际用途是否与 Prolog 相似?

0 投票
2 回答
1386 浏览

sml - 如何自定义 SML/NJ 交互式循环?

我是标准 ML 的新手,我正在尝试了解 SML/NJ 运行时环境。我想让它适应我的需要。具体来说,我想:

  • 默认使用 IntInf
  • 防止它将字符串和 IntInf 截断为 70 个字符。

这是我在 8 多个小时的阅读文档和实验中发现的。

我可以使用命令在 int 之上重载 IntInf

我可以使用变量 Control.Print.stringDepth 控制字符串中显示多少个字符。例如,这将让它在截断之前显示 1000 个字符:

我如何为 IntInf 值做同样的事情?我可以将深度设置为无限(即根本没有截断)吗?

打开 IntInf 是用 IntInf 重载 int 的最佳方法吗?

最后,如何让这一切在运行时自动加载,以便当我调用“sml”时它在我的默认环境中?


编辑:我后来发现有一个名为 Control.Print.intinfDepth 的选项可以设置为一个很大的数字(比如 999999)。不过,我不知道如何使它无限。

我的其他问题仍未得到解答。


编辑:我在 Kansas State 的一个班级遇到了这组 SML/NJ 定制。为了显示我自己的横幅消息并避免显示“val it = true : bool”,我需要测试 SMLofNJ.exportML 的返回值。如果是真的,堆映像刚刚恢复(即启动),我可以显示一条消息。如果为 false,则只是保存了堆映像。

0 投票
1 回答
14698 浏览

sml - 如何在 SML 中的 case 语句中打印?

我刚开始使用 SML,我正在尝试修改一些代码,以便了解它在做什么(我找不到像样的 SML/NJ 调试器,但这是一个单独的问题)。

假设这是有效的代码,因为 constant_int 是已经声明的数据类型的一部分,等等。如何添加打印语句来表示“返回“整数””?我试过:

但我得到:

我想我只是不明白如何执行一系列语句,只有最后一个应该被视为返回值。有什么建议吗?

另外,我将如何打印我自己的数据类型值?当我尝试将数据类型值传递给 print() 时,SML 不喜欢,所以我可能必须为每个数据类型创建一个新的打印函数,对吗?

0 投票
2 回答
2670 浏览

sml - 如何在 SML 中强制类型(如强制转换)

我正在创建 Rationals (int * int) 的结构,我的功能之一是:

gcd 给了我最大的公分母,所以我最终不是 2/8,而是应该是 1/4。gcd 使用 mod 来查找 gcd,因此它返回一个 int。但是我无法将除法表达式输入为 int。当我尝试添加: int * int到 diff 声明的末尾时,它给了我一个类型错误,即表达式 real * real 和 int * int 不匹配。

如何强制整数除法,或将表达式转换为整数?如果两者都可以,那么哪个更好?