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 b
yourUntilJust m f = untilJust (liftM f m)
Best,
Nick
[1] http://hackage.haskell.org/package/monad-loops
[2] http://hackage.haskell.org/package/monad-loops-0.4.2/docs/Control-Monad-Loops.html#v:untilJust
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-Gen.html#suchThat
[2]
suchThatMaybe :: Gen a -> (a -> Bool) -> Gen (Maybe a)
http://hackage.haskell.org/package/QuickCheck-2.6/docs/src/Test-QuickCheck-Gen.html#suchThatMaybe
--
Tony Morris
http://tmorris.net/
_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe