package fj.demo; import fj.data.IO; import fj.data.IOFunctions; import fj.data.List; import fj.data.Stream; import static fj.data.Enumerator.naturalEnumerator; import static fj.data.IOFunctions.runSafe; import static fj.data.IOFunctions.stdinReadLine; import static fj.data.Natural.natural; import static fj.data.Stream.forever; import static fj.Show.naturalShow; import static fj.Show.unlineShow; import static java.lang.System.out; public class Stream_Test { public static void main(final String[] args) { sequenceWhile(); // foreverNaturals(); } /** * Produces natural numbers forever. */ static void foreverNaturals() { unlineShow(naturalShow).println(forever(naturalEnumerator, natural(3).some(), 2)); } /** * Reads lines from standard input until a line's length is less than two or three lines * have been read. */ static void sequenceWhile() { Stream<IO<String>> s = Stream.repeat(stdinReadLine()); IO<Stream<String>> io = IOFunctions.sequenceWhile(s, s2 -> s2.length() > 1); List<String> list = runSafe(io).take(3).toList(); out.println("list: " + list + " size: " + list.length()); } }