Skip to content

Instantly share code, notes, and snippets.

@co-dan
Created July 15, 2013 14:10
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save co-dan/6000221 to your computer and use it in GitHub Desktop.
Save co-dan/6000221 to your computer and use it in GitHub Desktop.
proxy1 :: (Proxy p) => String -> Server p String Int IO ()
proxy1 = fromListS [1..] >-> mapU (const ()) >-> useU putStrLn
retpmorp :: (Proxy p) => () -> p String () () C IO r
retpmorp () = turn $ prompter ()
prompter :: (Proxy p) => () -> Producer p String IO r
prompter () = runIdentityP $ forever $ do
lift $ putStr "> "
lift $ hFlush stdout
n <- lift getLine
respond n
debugD s = execD (putStrLn s)
runit = runProxy $
proxy1
>-> printD
>-> mapD (const ())
>-> takeB_ 3
>-> retpmorp
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment