Ticket #7887: ghcbug.hs

File ghcbug.hs, 518 bytes (added by bfr, 12 months ago)
Line 
1import Control.Proxy
2
3fork :: (Monad m, Proxy p1, Proxy p2, Proxy p3)
4 => () -> Consumer p1 a (Producer p2 a (Producer p3 a m)) r
5fork () = runIdentityP . hoist (runIdentityP . hoist runIdentityP) $ forever $ do
6  a <- request ()          -- Request from the 'Consumer'
7  lift $ respond a         -- Send to the outer 'Producer'
8  lift $ lift $ respond a  -- Send to the inner 'Producer'
9
10test :: (Proxy p) => () -> Producer p Int IO r
11test () = runIdentityP $ forever $ do
12  respond 1
13  -- lift $ threadDelay 2000000