Functional programming 这种模式匹配并非详尽无遗。奥卡姆
有人能告诉我为什么这个代码Functional programming 这种模式匹配并非详尽无遗。奥卡姆,functional-programming,ocaml,Functional Programming,Ocaml,有人能告诉我为什么这个代码#让func[g]a=ga::[];; 输出此警告 警告8:此模式匹配并非详尽无遗。 以下是一个不匹配值的示例: [] 参数[g]将匹配单个元素列表,并将该元素绑定到gfunc[f]a将起作用,但如果函数应用于空列表func[]a,或具有多个元素的列表func[f,g]a,该怎么办?除了引发异常,它还能做什么?这就是警告告诉您的。参数[g]将匹配单个元素列表,并将该元素绑定到gfunc[f]a将起作用,但如果函数应用于空列表func[]a,或具有多个元素的列表func
#让func[g]a=ga::[];;
输出此警告
警告8:此模式匹配并非详尽无遗。
以下是一个不匹配值的示例:
[]
参数
[g]
将匹配单个元素列表,并将该元素绑定到g
func[f]a
将起作用,但如果函数应用于空列表func[]a
,或具有多个元素的列表func[f,g]a
,该怎么办?除了引发异常,它还能做什么?这就是警告告诉您的。参数[g]
将匹配单个元素列表,并将该元素绑定到g
func[f]a
将起作用,但如果函数应用于空列表func[]a
,或具有多个元素的列表func[f,g]a
,该怎么办?除了引发异常,它还能做什么?这就是警告告诉你的。你知道如何消除警告吗?如果调用func[]0
,会发生什么情况?正确的方法当然是通过匹配:让func gs a=match gs与[g]>.|u->适当地处理它代码>。否则,如果您使用的是4.06,则可以使用[@warning]
属性,或者如果您使用的是较旧版本的-w
编译器开关,带有-8
。但是,如果你真的只想要一个元素,为什么还要用一个列表呢?这只是我需要得到(a->b)列表->a->b列表的一个赋值,所以我用了这个。你知道如何消除警告吗?如果你调用func[]0
?正确的方法当然是通过匹配来适当地处理它:让func gs a=将gs与[g]->匹配…|u->代码>。否则,如果您使用的是4.06,则可以使用[@warning]
属性,或者如果您使用的是较旧版本的-w
编译器开关,带有-8
。但是,如果你真的只想要一个元素,为什么还要用一个列表呢?这只是我需要得到(a->b)列表->a->b列表的一个赋值,所以我用了这个