I've fixed this.
Simon
| -----Original Message-----
| From: Alastair Reid [mailto:[EMAIL PROTECTED]]
| Sent: 26 April 2001 20:54
| To: [EMAIL PROTECTED]
| Subject: Strange behaviour in implicit parameters
|
|
|
| [This bug report may be related to SimonPJ's question about
| implicit parameters and the monomorphism restriction - I'm not sure.]
|
| The attached program contains two definitions of "ident" - a
| function that uses implicit parameters.
|
| The only difference between them is that the first (which
| works) binds the implicit parameter to a normal variable and
| the second (which gives a type error uses the implicit
| parameter directly).
|
| $ rm -f T.o && ghc -c -fglasgow-exts T.hs -cpp -DOK=1
| $ rm -f T.o && ghc -c -fglasgow-exts T.hs -cpp -DOK=2
|
| T.hs:20:
| Could not deduce `?env :: ([(String, b)], b1)' from the context ()
| Probable fix:
| Add `?env :: ([(String, b)], b1)' to the banding(s) for {y}
| Or add an instance declaration for `?env ::
| ([(String, b)], b1)'
| arising from use of implicit parameter `?env' at T.hs:20
| In the first argument of `fst', namely `env'
| In the second argument of `lookup', namely `(fst env)'
|
| Interestingly, both versions work if I remove the 2nd
| component of Env:
|
| type Env = ([(String,Int)])
|
| and delete the calls to fst. This makes the somewhat
| mysterious behaviour of the typechecker even more mysterious.
|
| --
| Alastair Reid [EMAIL PROTECTED]
| http://www.cs.utah.edu/~reid/
|
|
|
| module T where
|
| import Maybe
|
|
| type Env = ([(String,Int)],Int)
|
| ident :: (?env :: Env) => String -> Int
|
| #if OK==1
|
| ident x = y
| where
| env = ?env
| y = fromJust (lookup x (fst env))
|
| #elif OK==2
|
| ident x = y
| where
| y = fromJust (lookup x (fst ?env))
|
| #endif
|
| _______________________________________________
| Glasgow-haskell-bugs mailing list
| [EMAIL PROTECTED]
| http://www.haskell.org/mailman/listinfo/glasgow-| haskell-bugs
|
_______________________________________________
Glasgow-haskell-bugs mailing list
[EMAIL PROTECTED]
http://www.haskell.org/mailman/listinfo/glasgow-haskell-bugs