gpt4 book ai didi

sml - 在 sml 中匹配非穷举

转载 作者:行者123 更新时间:2023-12-04 20:27:47 27 4
gpt4 key购买 nike

fun p( x::xl ) =
if x::xl = [] then []
else [0];

它收到警告:匹配非详尽无遗。

x::xl => ...

我想做的是:

p( [] ) = []

当我这样做时,它会给出一个未捕获的异常 Match [nonexhaustive match failure]

最佳答案

你测试什么,x::xl = [] ,永远不会是真的。列表是代数类型,定义为

datatype 'a list = :: of 'a * 'a list
| []

意味着作为列表的值要么是空列表,要么是放在另一个列表前面的某个元素。

所以一旦你的初始模式匹配 x::xl成功了,你知道它不是空的。 (不过,这应该相当清楚,因为如果 x 为空,它会分配给 x::xl 什么;空列表的第一个元素?)

您似乎在这里混合了两种风格,一种是模式匹配,另一种是 if-then-else。
fun p [] = []
| p (_::_) = [0]

fun p xs = if List.null xs then [] else [0]

关于sml - 在 sml 中匹配非穷举,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37668081/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com