
Hello, I have implemented a function for QuickCheck: untilJust :: Gen a -> (a -> Maybe b) -> Gen b I based it on the code for suchThat[1] and suchThatMaybe[2]. I am wondering if I have potentially re-implemented an existing function in part or full. In other words, is there an easier way of achieving this function without pulling the generator apart as much as I have in this implementation: http://lpaste.net/95317 [1] suchThat :: Gen a -> (a -> Bool) -> Gen a http://hackage.haskell.org/package/QuickCheck-2.6/docs/src/Test-QuickCheck-G... [2] suchThatMaybe :: Gen a -> (a -> Bool) -> Gen (Maybe a) http://hackage.haskell.org/package/QuickCheck-2.6/docs/src/Test-QuickCheck-G... -- Tony Morris http://tmorris.net/

Hi Tony,
Take a look at monad-loops package [1].
Seems like you reinvented a version of untilJust [2].
Your version can be obtained by:
yourUntilJust :: (Monad m) => m a -> (a -> Maybe b) -> m
byourUntilJust m f = untilJust (liftM f m)
Best,
Nick
[1] http://hackage.haskell.org/package/monad-loops
http://hackage.haskell.org/package/monad-loops
[2]
http://hackage.haskell.org/package/monad-loops-0.4.2/docs/Control-Monad-Loop...
http://hackage.haskell.org/package/monad-loops-0.4.2/docs/Control-Monad-Loop...
2013/11/8 Tony Morris
Hello, I have implemented a function for QuickCheck:
untilJust :: Gen a -> (a -> Maybe b) -> Gen b
I based it on the code for suchThat[1] and suchThatMaybe[2].
I am wondering if I have potentially re-implemented an existing function in part or full. In other words, is there an easier way of achieving this function without pulling the generator apart as much as I have in this implementation: http://lpaste.net/95317
[1] suchThat :: Gen a -> (a -> Bool) -> Gen a
http://hackage.haskell.org/package/QuickCheck-2.6/docs/src/Test-QuickCheck-G...
[2] suchThatMaybe :: Gen a -> (a -> Bool) -> Gen (Maybe a)
http://hackage.haskell.org/package/QuickCheck-2.6/docs/src/Test-QuickCheck-G...
-- Tony Morris http://tmorris.net/
_______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
participants (2)
-
Nickolay Kudasov
-
Tony Morris