在为一个函数定义多个模式匹配时,例如如下:
1: takeTree 0 tree = Leaf
2: takeTree levels (Leaf) = Leaf
3: takeTree levels (Branch value left right) = Branch value (takeTree...
我特别收到两个警告:
Source.hs:1:警告:已定义但未使用:`tree'
Source.hs:2:警告:已定义但未使用:`levels'
不过,我并没有立即相信这些是有用的警告。如果我的代码是:
1: takeTree 0 _ = Leaf
2: takeTree _ (Leaf) = Leaf
3: takeTree levels (Branch value left right) = Branch value (takeTree...
其中,修复了警告,我现在发现它的可读性要差得多,并且混淆了我期望作为输入值的语义。
为什么Defined but not used
在我的详尽模式中每个参数实际上至少使用一次时,这里根本是一个合理的警告?