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列表的一个赋值,所以我用了这个