Haskell模式匹配do表达式编译器警告
以下代码将在运行时失败(仅)Haskell模式匹配do表达式编译器警告,haskell,Haskell,以下代码将在运行时失败(仅) do {(x:xs) <- return "";return x} do{(x:xs)改用case表达式: do case "" of [] -> undefined -- or whatever else you want to do (x:xs) -> return x 希望有帮助。(x:xs)对于您关于编译器警告的问题,确实没有选项。-fwarn complete patterns只检查函数
do {(x:xs) <- return "";return x}
do{(x:xs)改用case
表达式:
do
case "" of
[] -> undefined -- or whatever else you want to do
(x:xs) -> return x
希望有帮助。(x:xs)对于您关于编译器警告的问题,确实没有选项。-fwarn complete patterns
只检查函数参数,而不是类似场景的左侧:foo=let Just x=Nothing in x
。这也只会在运行时失败。您期望什么行为?确定模式是否s正确与否在一般情况下是不可判定的。此外,您只能指定一个模式,因此对“不完整的模式”发出警告没有任何意义。您是否希望在中每次使用模式时都收到这样的警告一个相当于-fwarn的不完整模式,它与DO一起工作。如果不可能,有人能帮助我理解为什么不可能(例如?)。谢谢,这就是它需要做的,以便在运行时不会失败。我仍然对编译时没有警告感到惊讶。