如何查看smlnj shell中的所有列表项?

问题描述

我有一个包含365个项目的列表,对应于一年中的几天。

我需要将结果与手动计算的结果进行比较,但我只能看到:

val it = [1,1,...] : int list

是否有一种无需编写辅助函数就能做到这一点的方法?

解决方法

正如人们所建议的那样,您可以增加SML / NJ呈现很大价值的深度。

但是您也可以使用=进行比较,而不必查看列表的末尾。

例如,假设您的365个长度的列表称为days,而您手动计算的结果称为check,那么在REPL中,经过检查,它看起来像两者中有1

- days;
> val it =
    [1,1,...] : int list
- check;
> val it =
    [1,...] : int list

在这些值上使用=将显示实际上是否有相同数量的元素,而这些元素成对地实际上是否相同。

- days = check;
> val it = true : bool

如果dayscheck包含不同数量的元素,或者1部分中的...实际上是0,则将它们进行比较因为平等将返回false。因此,如果您可以通过编程方式验证它们是否等效,则实际上并不需要在屏幕上看到365个值。无论如何,这不容易出错。

是否有一种无需编写辅助函数就能做到这一点的方法?

如上所述;但我想问:这里的辅助功能有什么不好的地方?我认为,如果您使用辅助功能,则可以减少意外在手动检查的值中输入364或367 1的风险。

这是一个生成n的{​​{1}}个副本的列表的函数:

x

然后,您可以创建一个功能来检查您的fun repeat 0 x = [] | repeat n x = x :: repeat (n-1) x

days

在REPL中运行此

fun does_it_have_365_1s xs =
    xs = repeat 365 1

哦,天哪,我真的打过吗?

让我们将单个- does_it_have_365_1s [1,1]; > val it = false : bool - does_it_have_365_1s [1,1]; > val it = true : bool 翻转到1

0

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...