error found hole: _ is not appropriate in the following case
f :: [Char]
f = [x | x <- ['a', 'b'],
y <- (undefined:undefined:undefined:[]),
z <- [1,2,3,4],
r <- [True,False,True,False,True]]
f' :: [Char]
f' = [x | x <- ['a', 'b'],
y <- (undefined:undefined:undefined:[]),
z <- [1,2,3,4],
r <- [True, False, True, False, True],
s <- [_, _, _, _, _, _]]
main :: IO ()
main = do
print f
print f'
When the code is compiled with the function f the result is the following:\\
"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"
If we add in f the code s <- [_, _, _, _, _, _] to become the function f' and then compile the program, the following error is displayed.\\
test11.hs:5:131: error:
* Found hole: _ :: t0
Where: `t0' is an ambiguous type variable
* In the expression: _
In the expression: [_, _, _, _, ....]
In a stmt of a list comprehension: s <- [_, _, _, _, ....]
* Relevant bindings include
r :: Bool (bound at test11.hs:5:86)
z :: Integer (bound at test11.hs:5:70)
y :: t1 (bound at test11.hs:5:29)
x :: Char (bound at test11.hs:5:12)
f' :: [Char] (bound at test11.hs:5:1)
test11.hs:5:134: error:
* Found hole: _ :: t0
Where: `t0' is an ambiguous type variable
* In the expression: _
In the expression: [_, _, _, _, ....]
In a stmt of a list comprehension: s <- [_, _, _, _, ....]
* Relevant bindings include
r :: Bool (bound at test11.hs:5:86)
z :: Integer (bound at test11.hs:5:70)
y :: t1 (bound at test11.hs:5:29)
x :: Char (bound at test11.hs:5:12)
f' :: [Char] (bound at test11.hs:5:1)
test11.hs:5:137: error:
* Found hole: _ :: t0
Where: `t0' is an ambiguous type variable
* In the expression: _
In the expression: [_, _, _, _, ....]
In a stmt of a list comprehension: s <- [_, _, _, _, ....]
* Relevant bindings include
r :: Bool (bound at test11.hs:5:86)
z :: Integer (bound at test11.hs:5:70)
y :: t1 (bound at test11.hs:5:29)
x :: Char (bound at test11.hs:5:12)
f' :: [Char] (bound at test11.hs:5:1)
test11.hs:5:140: error:
* Found hole: _ :: t0
Where: `t0' is an ambiguous type variable
* In the expression: _
In the expression: [_, _, _, _, ....]
In a stmt of a list comprehension: s <- [_, _, _, _, ....]
* Relevant bindings include
r :: Bool (bound at test11.hs:5:86)
z :: Integer (bound at test11.hs:5:70)
y :: t1 (bound at test11.hs:5:29)
x :: Char (bound at test11.hs:5:12)
f' :: [Char] (bound at test11.hs:5:1)
test11.hs:5:143: error:
* Found hole: _ :: t0
Where: `t0' is an ambiguous type variable
* In the expression: _
In the expression: [_, _, _, _, ....]
In a stmt of a list comprehension: s <- [_, _, _, _, ....]
* Relevant bindings include
r :: Bool (bound at test11.hs:5:86)
z :: Integer (bound at test11.hs:5:70)
y :: t1 (bound at test11.hs:5:29)
x :: Char (bound at test11.hs:5:12)
f' :: [Char] (bound at test11.hs:5:1)
test11.hs:5:146: error:
* Found hole: _ :: t0
Where: `t0' is an ambiguous type variable
* In the expression: _
In the expression: [_, _, _, _, ....]
In a stmt of a list comprehension: s <- [_, _, _, _, ....]
* Relevant bindings include
r :: Bool (bound at test11.hs:5:86)
z :: Integer (bound at test11.hs:5:70)
y :: t1 (bound at test11.hs:5:29)
x :: Char (bound at test11.hs:5:12)
f' :: [Char] (bound at test11.hs:5:1)
I think that here the wildcard pattern _ is justified and does not have to give this error and must be used as undefined.\\ So this error makes no sense here.\\ I propose to make a correction in this case.
Trac metadata
| Trac field | Value |
|---|---|
| Version | 8.0.2 |
| Type | FeatureRequest |
| TypeOfFailure | OtherFailure |
| Priority | normal |
| Resolution | Unresolved |
| Component | Compiler |
| Test case | |
| Differential revisions | |
| BlockedBy | |
| Related | |
| Blocking | |
| CC | |
| Operating system | |
| Architecture |