
I'm having some trouble with QuickCheck2 and Control.Applicative. Specifically, I have the following functions (slightly simplified): copyVector :: IOVector -> Vector -> IO () freezeVector :: IOVector -> IO (Vector) I have a test, part of which looks like monadicIO $ do run $ copyVector <$> pure dst <*> freezeVector src -- more stuff... When I try running the test (using test-framework-quickcheck2), the `copyVector` function never gets called. If I re-write the test as monadicIO $ do src' <- run $ freezeVector run $ copyVector dst src' -- etc. then everything works fine (i.e., the call to `copyVector` gets executed). Does anyone have any clues as to what is going on? I suspect the problem is related to Test.QuickCheck.Monadic using `unsafePerformIO` without a `{-# NOINLINE -#}` pragma [1], but I'm not completely sure. Adding such a pragma to `monadicIO` and `run` in Monadic.hs does not fix the problem. I'm using Quickcheck-2.1.0.2 and GHC 6.10.1. Thanks in advance for any help, Patrick [1] http://hackage.haskell.org/packages/archive/QuickCheck/2.1.0.2/doc/html/src/...
participants (1)
-
Patrick Perry