问题标签 [smlnj]

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

sml - 代码优化

我必须编写一个接收此数据类型的函数“to_string”

并返回一个字符串。

例子

显示 And(Atom("saturday"),Atom("night")) = "(saturday & night)"

我的功能正在运行,但我有两个问题。

  1. 口译员告诉我->Warning: match nonexhaustive
  2. 我想我可以为所有类型(Not,And,Or)编写带有局部函数的函数,并避免重复代码,但我不知道如何。

有我的代码

非常感谢你的帮助。

0 投票
1 回答
1369 浏览

sml - 输出在 REPL 中被 #-signs 截断

我写了一个按预期工作的函数,但我不明白为什么输出是这样的。

功能:

测试:

输出:

0 投票
1 回答
428 浏览

sml - ML 中的序列(有限和无限)

好的,

我有序列的下一个定义:

我需要实现下一个功能:

该函数获取一个谓词函数,该函数返回真或假、n(整数)和序列。

功能:

  1. 如果 n<=0 返回相同的序列。
  2. else 返回一个 seq,它的前 n 个元素是原始 seq 中谓词为它们返回 true 的前 n 个元素,其余的将是相同的。

例如,如果谓词是 (x mod 2),seq 是 1,2,3,4,5...,n 是 3,那么新的 seq 是 2,4,6,7,8,...

此外,我应该检查另外 2 个选项:

2.1) 如果 seq 是有限的并且少于 n 个元素,谓词为它们返回 true,那么新的 seq 将包含谓词为它们返回 true 的元素。

2.2) 如果 seq 是无限的并且少于 n 个元素的谓词为它们返回 true,那么新的 seq 将包含谓词为它们返回 true 的所有元素,并且当尝试获取下一个元素时,它将进入无限循环。

我目前的代码在逻辑上是在没有考虑 2.1 和 2.2 的情况下计划的(尽管我得到了错误并且可以找到原因?)

语法错误或剧烈变化..我不确定?

(另外,对于 2.1 和 2.2,我只需要检查是否得到 (Nil and n>0) 然后返回 Nil?)

提前感谢您的帮助。

0 投票
1 回答
8313 浏览

list - 从列表中获取元素的机制

是否可以在不使用函数头和尾的情况下从新泽西州 SML 的列表中获取元素,如下所示:

提前致谢

0 投票
0 回答
41 浏览

sml - 如何确保将正确的元素添加到递归数据类型?

可能重复:
输出在 REPL 中被 #-signs 截断

假设我有一个递归数据类型,例如,累积各种水果组合

现在,如果我在 a 中添加一个水果,basket你会得到类似的东西

如果我要添加第二个水果,我会得到,

我认为这是出于显示目的?

有没有办法检查我的篮子是否装满了?

0 投票
1 回答
482 浏览

sml - Can I expand a typedef in SMLNJ?

So I was writing up some code in standard ML, and trying to compile it with smlnj. I got the following error:

Now, this looks like it should be a type match based on my cursory inspection of the types. I'm not going to tell you them since I want a general solution, not the bug in my code.

Is it possible to expand both types into the base datatypes so I can figure out how they differ? With all these typedefs floating around things get confusing, and digging through .sml files for all the definitions and writing the expansion on paper seems like a tedious solution.

I would love to say something like:

and figure out what the heck kind of expression might produce a valid fundec.

0 投票
1 回答
9844 浏览

sml - SML-NJ,如何编译独立的可执行文件

我开始学习标准 ML,现在我尝试使用新泽西编译器的标准 ML。

现在我可以使用交互式循环,但是如何将源文件编译为独立的可执行文件?

例如,在 C 中,可以只写

$ gcc hello_world.c -o helloworld

然后运行 ​​helloworld 二进制文件。

我阅读了 SML NJ Compilation Manager 的文档,但没有任何明确的示例。

另外,是否有另一个 SML 编译器(允许独立创建二进制文件)可用?

0 投票
1 回答
5594 浏览

sml - 增加 SML/NJ 的打印深度

我试图让 SML/NJ 在顶层打印出结果,而不用到处都放 # 符号。

根据一些旧文档(以及 2001 年该新闻组的帖子),应该可以使用Compiler.Control.Print.printDepth

但是,在 SML/NJ 版本 110.7 上,这只会给出一个错误:

0 投票
1 回答
378 浏览

concurrency - Standard ML / CML wrong operator - operand error

I am trying to implement a concurrent list using CML extensions of Standard ML but i am running into errors that are probably to do with my being a newbie in Standard ML. I have implemented the clist as having an input and output channel and I store the list state in a loop. However my code does not compile and gives errors below

This is the signature file

Errors I am getting:

0 投票
1 回答
1212 浏览

functional-programming - 标准毫升值限制错误

嗨,我需要帮助了解为什么我在此代码中遇到值限制错误,以及如果可能的话如何解决它。

特别是在 val cnil 中,我试图创建一个空的 CLIST 结构来匹配签名,但我不断收到这个值限制错误。

谢谢你的帮助

这是签名文件

这是我得到的错误: