微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决如何查看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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。