hsc3-lang-0.8: Help/Pattern/Step/prp.help.lhs
> import Sound.SC3.Lang.Pattern.Step
> import System.IO
> data S = S { c :: Char }
> u :: Show a => (a, S) -> IO S
> u (a,_) = print a >> getChar >>= return . S
> s0 :: S
> s0 = S 'a'
> p :: P S Char
> p = prp (\s -> (pcons (c s) p, s))
> q :: P S (Char,Int)
> q = pzip p (pseq [1,2,3,4,5] 1)
> main :: IO ()
> main = do
> hSetBuffering stdin NoBuffering
> s <- u (('t',0), s0)
> r <- runP s u (flip (:)) [] q
> print (reverse r)
-- for below, set hsc3-literate-p to nil
import Sound.SC3.Lang.Pattern.Step
import System.IO
let { u (x,_) = print x >> getChar >>= return
; s0 = 'a'
; p = prp (\s -> (pcons s p, s))
; q = pzip p (pseq [1,2,3,4,5] 1) }
in do { hSetBuffering stdin NoBuffering
; s <- u (('t',0), s0)
; r <- runP s u (flip (:)) [] q
; print (reverse r) }