【发布时间】:2019-04-18 19:44:14
【问题描述】:
我在 sml 程序中遇到了模式匹配问题。我的代码是这样的:
fun ff (arr, _, [], _) = []
|ff (arr, 0, (x::xs), ping_list) =ping_list
|ff (arr, K, (x :: xs), ping_list) =
(if Array.sub(arr, x)-1 < 1
then ff(arr, (K-1), xs, (ping_list@[x]))
else ff(arr, K, xs, (ping_list@[x])))
正如您在完成模式匹配的第三种情况后所见,K 可能为 0,而第三个参数列表可能为 []。在这种情况下,在运行一些测试后,它会选择第一个模式并返回[]。
我该如何控制这个?在 K=0 和 xs 都为空的情况下,我希望执行第二个模式并 ping_list 作为结果,但我也想了解如何处理这样的极端情况由 sml.
提前谢谢你
【问题讨论】:
标签: sml