FunctionalJava article (#2586)
* Update pom.xml with functionalJava dependencies * Add functionalJava classes * update README.md
This commit is contained in:
parent
cc304b068b
commit
35ac22c947
|
@ -31,7 +31,7 @@
|
||||||
- [Guide to Apache Commons CircularFifoQueue](http://www.baeldung.com/commons-circular-fifo-queue)
|
- [Guide to Apache Commons CircularFifoQueue](http://www.baeldung.com/commons-circular-fifo-queue)
|
||||||
- [Quick Guide to RSS with Rome](http://www.baeldung.com/rome-rss)
|
- [Quick Guide to RSS with Rome](http://www.baeldung.com/rome-rss)
|
||||||
- [Introduction to NoException](http://www.baeldung.com/no-exception)
|
- [Introduction to NoException](http://www.baeldung.com/no-exception)
|
||||||
|
- [Introduction to FunctionalJava](http://www.baeldung.com/functional-java)
|
||||||
|
|
||||||
The libraries module contains examples related to small libraries that are relatively easy to use and does not require any separate module of its own.
|
The libraries module contains examples related to small libraries that are relatively easy to use and does not require any separate module of its own.
|
||||||
|
|
||||||
|
|
|
@ -554,6 +554,26 @@
|
||||||
<artifactId>protonpack</artifactId>
|
<artifactId>protonpack</artifactId>
|
||||||
<version>${protonpack.version}</version>
|
<version>${protonpack.version}</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.functionaljava</groupId>
|
||||||
|
<artifactId>functionaljava</artifactId>
|
||||||
|
<version>4.7</version>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.functionaljava</groupId>
|
||||||
|
<artifactId>functionaljava-java8</artifactId>
|
||||||
|
<version>4.7</version>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.functionaljava</groupId>
|
||||||
|
<artifactId>functionaljava-quickcheck</artifactId>
|
||||||
|
<version>4.7</version>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.functionaljava</groupId>
|
||||||
|
<artifactId>functionaljava-java-core</artifactId>
|
||||||
|
<version>4.7</version>
|
||||||
|
</dependency>
|
||||||
</dependencies>
|
</dependencies>
|
||||||
<repositories>
|
<repositories>
|
||||||
<repository>
|
<repository>
|
||||||
|
|
|
@ -0,0 +1,47 @@
|
||||||
|
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<Unit> 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<String, IO<Unit>> printLetters = i -> printLetters(i);
|
||||||
|
|
||||||
|
IO<Unit> lowerCase = IOFunctions
|
||||||
|
.stdoutPrintln("What's your first Name ?");
|
||||||
|
|
||||||
|
IO<Unit> input = IOFunctions.stdoutPrint("First Name: ");
|
||||||
|
|
||||||
|
IO<Unit> userInput = IOFunctions.append(lowerCase, input);
|
||||||
|
|
||||||
|
IO<String> readInput = IOFunctions.stdinReadLine();
|
||||||
|
|
||||||
|
F<String, String> toUpperCase = i -> i.toUpperCase();
|
||||||
|
|
||||||
|
F<String, IO<Unit>> transformInput = F1Functions
|
||||||
|
.<String, IO<Unit>, String> o(printLetters).f(toUpperCase);
|
||||||
|
|
||||||
|
IO<Unit> readAndPrintResult = IOFunctions.bind(readInput,
|
||||||
|
transformInput);
|
||||||
|
|
||||||
|
IO<Unit> program = IOFunctions.bind(userInput,
|
||||||
|
nothing -> readAndPrintResult);
|
||||||
|
|
||||||
|
IOFunctions.toSafe(program).run();
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,48 @@
|
||||||
|
package com.baeldung.fj;
|
||||||
|
|
||||||
|
import fj.F;
|
||||||
|
import fj.Show;
|
||||||
|
import fj.data.Array;
|
||||||
|
import fj.data.List;
|
||||||
|
import fj.data.Option;
|
||||||
|
import fj.function.Characters;
|
||||||
|
import fj.function.Integers;
|
||||||
|
|
||||||
|
public class FunctionalJavaMain {
|
||||||
|
|
||||||
|
public static final F<Integer, Boolean> isEven = i -> i % 2 == 0;
|
||||||
|
|
||||||
|
public static void main(String[] args) {
|
||||||
|
|
||||||
|
List<Integer> fList = List.list(3, 4, 5, 6);
|
||||||
|
List<Boolean> evenList = fList.map(isEven);
|
||||||
|
Show.listShow(Show.booleanShow).println(evenList);
|
||||||
|
|
||||||
|
fList = fList.map(i -> i + 1);
|
||||||
|
Show.listShow(Show.intShow).println(fList);
|
||||||
|
|
||||||
|
Array<Integer> a = Array.array(17, 44, 67, 2, 22, 80, 1, 27);
|
||||||
|
Array<Integer> b = a.filter(Integers.even);
|
||||||
|
Show.arrayShow(Show.intShow).println(b);
|
||||||
|
|
||||||
|
Array<String> array = Array.array("Welcome", "To", "baeldung");
|
||||||
|
Boolean isExist = array.exists(s -> List.fromString(s).forall(Characters.isLowerCase));
|
||||||
|
System.out.println(isExist);
|
||||||
|
|
||||||
|
Array<Integer> intArray = Array.array(17, 44, 67, 2, 22, 80, 1, 27);
|
||||||
|
int sum = intArray.foldLeft(Integers.add, 0);
|
||||||
|
System.out.println(sum);
|
||||||
|
|
||||||
|
Option<Integer> n1 = Option.some(1);
|
||||||
|
Option<Integer> n2 = Option.some(2);
|
||||||
|
|
||||||
|
F<Integer, Option<Integer>> f1 = i -> i % 2 == 0 ? Option.some(i + 100) : Option.none();
|
||||||
|
|
||||||
|
Option<Integer> result1 = n1.bind(f1);
|
||||||
|
Option<Integer> result2 = n2.bind(f1);
|
||||||
|
|
||||||
|
Show.optionShow(Show.intShow).println(result1);
|
||||||
|
Show.optionShow(Show.intShow).println(result2);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
Loading…
Reference in New Issue