Commit 6388bdad authored by simonpj's avatar simonpj
Browse files

[project @ 2005-07-22 10:13:16 by simonpj]

Add Robert van Herks example
parent e5fede7a
......@@ -206,6 +206,7 @@ test('tc193', only_compiler_types(['ghc']), compile, [''])
test('tc194', only_compiler_types(['ghc']), compile, [''])
test('tc195', only_compiler_types(['ghc']), compile, [''])
test('tc196', normal, compile, [''])
test('tc197', normal, compile, [''])
test('LoopOfTheDay1', normal, compile, [''])
test('LoopOfTheDay2', normal, compile, [''])
......
{-# OPTIONS -fglasgow-exts #-}
-- Another dependency analysis test
-- Notice that 'a' and 'b' are mutually recursive,
-- but have different contexts.
--
-- This is the program submitted by Robert van Herk [rherk@cs.uu.nl]
-- to motivate the refined dependency analysis.
module ShouldCompile where
import Data.IORef
class MyReader r v | r -> v where
myRead :: r -> IO v
data R v = R (IORef v)
instance MyReader (R v) v where
myRead (R v) =
do v <- readIORef v
return v
a :: IO ()
a =
do r <- createReader
b r
b :: MyReader r Int => r -> IO ()
b r =
do i <- myRead r
if i > 10
then a
else putStrLn (show i)
createReader :: IO (R Int)
createReader =
do ref <- newIORef 0
return (R ref)
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment