how do I abstract this pattern ?

Bulat Ziganshin bulat.ziganshin at
Wed May 21 12:31:42 EDT 2008

Hello HP,

Wednesday, May 21, 2008, 8:11:56 PM, you wrote:

> Suppose p1, p2, p3 are 3 predicates
> that take an input -- say, a String.
> They return either (True, result)
>             or     False.

impossible because these are different types :))

if they return Just result or Nothing - yes, use Maybe as monad:

combine p1 p2 p3 x= do x1 <- p1 x
                       x2 <- p2 x1
                       x3 <- p3 x2
                       return x3

or shortly

combine p1 p2 p3 x   =   p1 x >>= p2 >>= p3

Best regards,
 Bulat                            mailto:Bulat.Ziganshin at

More information about the Glasgow-haskell-users mailing list