问题标签 [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 回答
1469 浏览

type-inference - 类型推断的限制是什么?

类型推断的限制是什么?哪些类型的系统没有通用推理算法?

0 投票
3 回答
2144 浏览

sml - 抑制标准 ML 中的“val it”输出

我正在用标准 ML (SML/NJ) 编写一个“脚本”,根据我的喜好设置交互式环境。脚本做的最后一件事是打印出一条消息,表明一切顺利。本质上,最后一行是这样的:

当我运行脚本时,一切顺利,但 SML 解释器显示打印函数的返回值。

由于我只是在屏幕上打印一些东西,我怎样才能抑制“val it = () : unit”输出,以便我看到的只是“SML 准备就绪”消息,然后是解释器提示?

0 投票
4 回答
9157 浏览

data-structures - 什么是表示无向图的好数据结构?

我需要构建一个无向图。我不需要它做任何太花哨的事情,但理想情况下它会像这样工作:

SML/NJ 中是否有一个好的数据结构来模拟这些关系?我应该自己滚吗?

更新

我已经开始尝试自己滚动,但是当我尝试测试它时出现类型不匹配错误。我在 SML 结构和函子方面的经验非常基础,所以我认为我做的事情显然是错误的。我怎样才能让它工作?另外,你能帮我把它做成一个'a graph吗?从语义上讲,这似乎更有意义。

代码

错误

当我做

我得到一个类型不匹配:

0 投票
2 回答
666 浏览

operators - 有没有办法在 SML/NJ 中获得二元运算符的 Curried 形式?

例如,而不是

我宁愿有

用于

显然我可以自己做这件事,例如,

但我想确保我不会错过更优雅的方式。

0 投票
2 回答
546 浏览

structure - 结构内部的签名

我想将签名/结构对放在结构中,如下所示:

但即使是最简单的示例也会产生错误:

似乎在结构内不允许签名。实现此功能的最佳方法是什么?

0 投票
3 回答
3584 浏览

user-interface - 标准 ML 的 GUI?

出于好奇,我最近开始学习标准 ML。所以我所知道的是它有一个高效的编译器(MLton),它允许我们自由地使用抽象而不用担心性能。

如果我也可以使用标准 ML 进行一些 GUI 编程,那将是完美的。标准 ML 是否有类似 Gtk、Qt 或 WxWidgets 的绑定?

非常感谢你。

0 投票
6 回答
4064 浏览

functional-programming - 标准机器学习入门

我正在寻找某种“面向初学者的机器学习”指南——到目前为止,谷歌已经引导我找到一些晦涩难懂的邮件列表或无法理解的文本。

问题是,到目前为止,我的函数式编程经验为零,并且围绕这些概念展开思考比预期的要困难得多。例如,我现在要做的任务(是的,大学:))是在两个列表(a,b)和(c,d)之间进行映射,因此结果是(a,d)的列表) 来自 b = c 的对。

我通常会做的是:

但是,我什至无法开始在 SML 中实现类似的东西。例如,我知道我可以用嵌套map f list的 's 遍历列表。但是,运行时 (SML/NJ) 只接受仅将列表元素作为参数的函数。但是,如果我一次只能对两个列表之一进行操作,我怎么知道要返回哪些元素呢?

我迫切需要一种可以解决这种事情的资源,最好是带有友好的大字母和大量代码示例:/

0 投票
3 回答
3347 浏览

functional-programming - SML/NJ - 匹配动态类型的模式

是否可以编写具有动态类型输入参数的函数?我尝试了模式匹配,但显然它不是这样工作的。

我想做这样的事情:

谢谢你。

0 投票
3 回答
2489 浏览

functional-programming - 是什么导致了这个 Standard-ML 类型错误?

我试图制作这个非常简单的 SML 函数的尾递归版本:

在此过程中,我在参数上使用了类型注释。下面的代码显示了这一点,并导致类型错误(如下所示),而如果我只是删除类型注释,SML 会毫无问题地接受它,为整个函数提供与上面更简单的函数相同的签名。

错误:

给出了两个错误。后者在这里似乎不太重要,suffixes_helper 的两个子句不匹配。第一个是我不明白的。我注释说第一个参数是 type 'a:list,第二个参数是 type 'b:list'b:listHindley-Milner 类型推理算法不应该是建立在我理解的一般统一之上的,能够'a:list list使用 的替换来统一'b ---> 'a list吗?

编辑:答案表明它可能与不允许推断类型的类型推断算法有关,从某种意义上说,推断类型比类型注释给出的更严格。我猜想这样的规则只适用于参数和整个函数的注释。我不知道这是否正确。无论如何,我尝试将类型注释移动到函数体,我得到了同样的错误:

现在的错误是:

0 投票
1 回答
1798 浏览

if-statement - 莫斯科 ML - 一个函数中的多个 if 语句

我在功能的一部分上遇到了一些麻烦。我的函数需要至少 3 个字符的输入字符串以避免错误,为此需要添加一两个“。” 在变量中。看起来像这样:

功能码;

我的问题是,我如何结束第一个 if 行?因为现在是第二个 if 语句出错。

谢谢/乔金