如何解决如何查看smlnj shell中的所有列表项?
我需要将结果与手动计算的结果进行比较,但我只能看到:
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
如果days
和check
包含不同数量的元素,或者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 举报,一经查实,本站将立刻删除。