>>> intersperse x = Stream.intersperseM (return x) >>> intersperse x = Stream.unfoldEachSepBy x Unfold.identity >>> intersperse x = Stream.unfoldEachSepBySeq x Unfold.identity >>> intersperse x = Stream.interleaveSepBy (Stream.repeat x)Example:
>>> f x y = Stream.toList $ Stream.intersperse x $ Stream.fromList y >>> f ',' "abc" "a,b,c" >>> f ',' "a" "a"
>>> intersperseM x = Stream.interleaveSepBy (Stream.repeatM x)
>>> f x y = Stream.fold Fold.drain $ Stream.trace putChar $ Stream.intersperseM_ x $ Stream.fromList y >>> f (putChar '.') "abc" a.b.c >>> f (putChar '.') "a" aPre-release
>>> intersperseBeginByM_ = Stream.trace_ >>> intersperseBeginByM_ m = Stream.mapM (\x -> void m >> return x)Usage:
>>> f x y = Stream.fold Fold.drain $ Stream.trace putChar $ Stream.intersperseBeginByM_ x $ Stream.fromList y >>> f (putChar '.') "abc" .a.b.cSame as trace_. Pre-release
>>> input = Stream.fromList "hello" >>> Stream.toList $ Stream.intersperseEndByEveryM 2 (return ',') input "he,ll,o," >>> f n x y = Stream.toList $ Stream.intersperseEndByEveryM n (pure x) $ Stream.fromList y >>> f 2 ',' "abcdef" "ab,cd,ef," >>> f 2 ',' "abcdefg" "ab,cd,ef,g," >>> f 2 ',' "a" "a,"Pre-release
>>> intersperseEndByM x = Stream.interleaveEndBy (Stream.repeatM x)Usage:
>>> f x y = Stream.toList $ Stream.intersperseEndByM (pure x) $ Stream.fromList y >>> f ',' "abc" "a,b,c," >>> f ',' "a" "a,"Pre-release
>>> f x y = Stream.fold Fold.drain $ Stream.trace putChar $ Stream.intersperseEndByM_ x $ Stream.fromList y >>> f (putChar '.') "abc" a.b.c. >>> f (putChar '.') "a" a.Pre-release
> intersperseEveryM n x = Stream.interleaveEverySepBy n (Stream.repeatM x)Idioms:
>>> intersperseM = Stream.intersperseEveryM 1 >>> intersperse x = Stream.intersperseEveryM 1 (return x)Usage:
> input = Stream.fromList "hello" > Stream.toList $ Stream.intersperseEveryM 2 (return ',') input"he,ll,o" Unimplemented