Implicit parameters:
Keean Schupke
k.schupke at imperial.ac.uk
Wed Jan 19 09:42:05 EST 2005
Question regarding implicit parameters... The GHC manual says:
"Dynamic binding constraints behave just like other type class
constraints in that they are automatically propagated."
But the following code produces an error:
---------------------------------------------------------------------------------------------------------
main = do
var <- newIORef (0::Int)
let ?global_counter = var in f
f = do
a <- get_unique
putStr (showInt a "\n")
b <- get_unique
putStr (showInt b "\n")
c <- get_unique
putStr (showInt c "\n")
get_unique :: (?global_counter :: IORef Int) => IO Int
get_unique = readIORef ?global_counter
----------------------------------------------------------------------------------------------------------
If "(?global_counter :: IORef Int)" were a class constraint the type
signature
for 'f' could be derived automatically... but we get:
Unbound implicit parameter (?global_counter::IORef a)
arising from use of `get_unique' at Test.hs:17:13-22
Is this a bug? Is there some reason why this is not possible? (and if it
is not possible
shouldn't the documentation be changed to reflect this)...
Keean.
More information about the Glasgow-haskell-users
mailing list