Funava
Small Java library for partial function application.
Funava is implemented without a single Java class.
Setup
Currently only as snapshot available from: https://oss.sonatype.org/content/repositories/snapshots/
<dependency>
<groupId>io.jmnarloch</groupId>
<artifactId>funava</artifactId>
<version>0.2.0</version>
</dependency>
Examples
Safe cast
Object val = "test";
String result = SafeCast.cast(val).to(String.class).orElse("default");
// result == test
Ternary operator
int i = 15;
int result = Condition.when(i % 2 == 0).then(i / 2).orElse(i * 3);
// i == 45
Partial function application
public String url(String scheme, String host, int port, String username, String repo) {
return String.format("%s://%s:%d/%s/%s", scheme, host, port, username, repo);
}
String url = Partial.function(this::url)
.arg("https")
.arg("github.com")
.arg(443)
.arg("jmnarloch")
.apply("funava");
// url == https://github.com:443/jmnarloch/funava
public int sum(int a, int b) {
return a + b;
}
int sum = Partial.function(this::sum)
.arg(1)
.apply(2);
// 1 + 2 == 3
public int substract(int a, int b) {
return a - b;
}
int diff = Partial.function(this::substract)
.rarg(2)
.apply(1);
// 1 - 2 == -1
public int product(int a, int b) {
return a * b;
}
int product = Partial.function(this::product)
.arg(4)
.apply(5);
// 4 * 5 == 20
License
Apache 2.0