package com.baeldung.fj; import fj.F; import fj.F1Functions; import fj.Unit; import fj.data.IO; import fj.data.IOFunctions; public class FunctionalJavaIOMain { public static IO printLetters(final String s) { return () -> { for (int i = 0; i < s.length(); i++) { System.out.println(s.charAt(i)); } return Unit.unit(); }; } public static void main(String[] args) { F> printLetters = i -> printLetters(i); IO lowerCase = IOFunctions.stdoutPrintln("What's your first Name ?"); IO input = IOFunctions.stdoutPrint("First Name: "); IO userInput = IOFunctions.append(lowerCase, input); IO readInput = IOFunctions.stdinReadLine(); F toUpperCase = i -> i.toUpperCase(); F> transformInput = F1Functions., String> o(printLetters).f(toUpperCase); IO readAndPrintResult = IOFunctions.bind(readInput, transformInput); IO program = IOFunctions.bind(userInput, nothing -> readAndPrintResult); IOFunctions.toSafe(program).run(); } }