From eba9e672cfbc577afa38f2a7e9b70d7069f89218 Mon Sep 17 00:00:00 2001
From: Alexander Bandukwala <7h3kk1d@gmail.com>
Date: Mon, 1 May 2023 16:41:46 -0500
Subject: [PATCH 1/5] Change language version to 17
---
pom.xml | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/pom.xml b/pom.xml
index bae03b1e..07e73502 100644
--- a/pom.xml
+++ b/pom.xml
@@ -91,8 +91,8 @@
maven-compiler-plugin
${maven-compiler-plugin.version}
- 1.8
- 1.8
+ 17
+ 17
-Xlint:all
-Werror
From 59fa9129148ee0061800c5f2f810e9ba06255582 Mon Sep 17 00:00:00 2001
From: Alexander Bandukwala <7h3kk1d@gmail.com>
Date: Mon, 1 May 2023 16:47:06 -0500
Subject: [PATCH 2/5] Convert some classes to records
---
README.md | 23 +++++----------
.../lambda/functor/builtin/Exchange.java | 12 +++-----
.../lambda/functor/builtin/Market.java | 21 +++++++-------
.../testsupport/assertion/PrismAssert.java | 28 ++++++-------------
4 files changed, 30 insertions(+), 54 deletions(-)
diff --git a/README.md b/README.md
index 7d84c629..2e6aa98d 100644
--- a/README.md
+++ b/README.md
@@ -672,24 +672,15 @@ There are three functions that lambda provides that interface directly with lens
Lenses can be easily created. Consider the following `Person` class:
```Java
-public final class Person {
- private final int age;
+public record Person(int age) {
- public Person(int age) {
- this.age = age;
- }
-
- public int getAge() {
- return age;
- }
+ public Person setAge(int age) {
+ return new Person(age);
+ }
- public Person setAge(int age) {
- return new Person(age);
- }
-
- public Person setAge(LocalDate dob) {
- return setAge((int) YEARS.between(dob, LocalDate.now()));
- }
+ public Person setAge(LocalDate dob) {
+ return setAge((int) YEARS.between(dob, LocalDate.now()));
+ }
}
```
diff --git a/src/main/java/com/jnape/palatable/lambda/functor/builtin/Exchange.java b/src/main/java/com/jnape/palatable/lambda/functor/builtin/Exchange.java
index f0405036..bfd861e1 100644
--- a/src/main/java/com/jnape/palatable/lambda/functor/builtin/Exchange.java
+++ b/src/main/java/com/jnape/palatable/lambda/functor/builtin/Exchange.java
@@ -12,20 +12,15 @@
* @param the larger viewing value of an {@link Iso}
* @param the larger viewed value of an {@link Iso}
*/
-public final class Exchange implements Profunctor> {
- private final Fn1 super S, ? extends A> sa;
- private final Fn1 super B, ? extends T> bt;
-
- public Exchange(Fn1 super S, ? extends A> sa, Fn1 super B, ? extends T> bt) {
- this.sa = sa;
- this.bt = bt;
- }
+public record Exchange(Fn1 super S, ? extends A> sa,
+ Fn1 super B, ? extends T> bt) implements Profunctor> {
/**
* Extract the mapping S -> A
.
*
* @return an {@link Fn1}<S, A>
*/
+ @Override
public Fn1 super S, ? extends A> sa() {
return sa;
}
@@ -35,6 +30,7 @@ public Exchange(Fn1 super S, ? extends A> sa, Fn1 super B, ? extends T> bt)
*
* @return an {@link Fn1}<B, T>
*/
+ @Override
public Fn1 super B, ? extends T> bt() {
return bt;
}
diff --git a/src/main/java/com/jnape/palatable/lambda/functor/builtin/Market.java b/src/main/java/com/jnape/palatable/lambda/functor/builtin/Market.java
index 3c8ce757..f5cb2937 100644
--- a/src/main/java/com/jnape/palatable/lambda/functor/builtin/Market.java
+++ b/src/main/java/com/jnape/palatable/lambda/functor/builtin/Market.java
@@ -28,13 +28,10 @@
* @param the input that might fail to map to its output
* @param the guaranteed output
*/
-public final class Market implements
+public record Market(Fn1 super B, ? extends T> bt, Fn1 super S, ? extends Either> sta) implements
MonadRec>,
Cocartesian> {
- private final Fn1 super B, ? extends T> bt;
- private final Fn1 super S, ? extends Either> sta;
-
public Market(Fn1 super B, ? extends T> bt, Fn1 super S, ? extends Either> sta) {
this.bt = fn1(bt);
this.sta = fn1(sta);
@@ -45,6 +42,7 @@ public Market(Fn1 super B, ? extends T> bt, Fn1 super S, ? extends Either{@link Fn1}<B, T>
*/
+ @Override
public Fn1 super B, ? extends T> bt() {
return bt;
}
@@ -54,6 +52,7 @@ public Market(Fn1 super B, ? extends T> bt, Fn1 super S, ? extends Either{@link Fn1}<S, {@link Either}<T, A>>
*/
+ @Override
public Fn1 super S, ? extends Either> sta() {
return sta;
}
@@ -72,9 +71,9 @@ public Market pure(U u) {
@Override
public Market flatMap(Fn1 super T, ? extends Monad>> f) {
return new Market<>(b -> f.apply(bt().apply(b)).>coerce().bt().apply(b),
- s -> sta().apply(s).invert()
- .flatMap(t -> f.apply(t).>coerce().sta()
- .apply(s).invert()).invert());
+ s -> sta().apply(s).invert()
+ .flatMap(t -> f.apply(t).>coerce().sta()
+ .apply(s).invert()).invert());
}
/**
@@ -89,7 +88,7 @@ public Market trampolineM(
trampoline(t -> fn.apply(t).>>coerce()
.sta.apply(s)
.match(tOrU -> tOrU.match(RecursiveResult::recurse, u -> terminate(left(u))),
- a -> terminate(right(a)))),
+ a -> terminate(right(a)))),
Either::right)));
return new Market<>(bu, sua);
}
@@ -101,7 +100,7 @@ public Market trampolineM(
public Market zip(Applicative, Market> appFn) {
Market> marketF = appFn.coerce();
return new Market<>(b -> marketF.bt().apply(b).apply(bt().apply(b)),
- s -> sta().apply(s).invert().zip(marketF.sta().apply(s).invert()).invert());
+ s -> sta().apply(s).invert().zip(marketF.sta().apply(s).invert()).invert());
}
/**
@@ -118,8 +117,8 @@ public Market fmap(Fn1 super T, ? extends U> fn) {
@Override
public Market, Choice2> cocartesian() {
return new Market<>(bt.fmap(Choice2::b),
- cs -> cs.fmap(sta).match(c -> left(a(c)),
- tOrA -> tOrA.match(t -> left(b(t)), Either::right)));
+ cs -> cs.fmap(sta).match(c -> left(a(c)),
+ tOrA -> tOrA.match(t -> left(b(t)), Either::right)));
}
/**
diff --git a/src/test/java/testsupport/assertion/PrismAssert.java b/src/test/java/testsupport/assertion/PrismAssert.java
index 443130fb..f10e30e8 100644
--- a/src/test/java/testsupport/assertion/PrismAssert.java
+++ b/src/test/java/testsupport/assertion/PrismAssert.java
@@ -59,29 +59,19 @@ private static Maybe falsify(String label, Fn2 l, Fn2
.apply(cases);
}
- private static final class PrismResult {
- private final Maybe maybeS;
-
- private PrismResult(Maybe maybeS) {
- this.maybeS = maybeS;
- }
+ private record PrismResult(Maybe maybeS) {
@Override
- public boolean equals(Object other) {
- if (other instanceof PrismResult) {
- return maybeS.zip(((PrismResult>) other).maybeS.fmap(fn2(Objects::equals))).orElse(true);
+ public boolean equals(Object other) {
+ if (other instanceof PrismResult) {
+ return maybeS.zip(((PrismResult>) other).maybeS.fmap(fn2(Objects::equals))).orElse(true);
+ }
+ return false;
}
- return false;
- }
-
- @Override
- public int hashCode() {
- return Objects.hash(maybeS);
- }
@Override
- public String toString() {
- return maybeS.toString();
+ public String toString() {
+ return maybeS.toString();
+ }
}
- }
}
From aba344aab4e79251548a52bb6070b6bb4a4a3571 Mon Sep 17 00:00:00 2001
From: Alexander Bandukwala <7h3kk1d@gmail.com>
Date: Mon, 1 May 2023 16:50:15 -0500
Subject: [PATCH 3/5] Use pattern variables
---
.../java/com/jnape/palatable/lambda/adt/hlist/HList.java | 3 +--
src/main/java/com/jnape/palatable/lambda/adt/hmap/HMap.java | 3 +--
.../com/jnape/palatable/lambda/functor/builtin/Lazy.java | 3 +--
.../lambda/internal/iteration/DroppingIterable.java | 3 +--
.../lambda/internal/iteration/FilteringIterable.java | 3 +--
.../lambda/internal/iteration/MappingIterable.java | 3 +--
.../internal/iteration/PredicatedDroppingIterable.java | 3 +--
.../lambda/internal/iteration/PredicatedTakingIterable.java | 3 +--
.../lambda/internal/iteration/RateLimitingIterable.java | 3 +--
.../lambda/internal/iteration/ReversingIterable.java | 3 +--
.../palatable/lambda/internal/iteration/SnocIterable.java | 3 +--
.../palatable/lambda/internal/iteration/TakingIterable.java | 3 +--
src/main/java/com/jnape/palatable/lambda/io/IO.java | 6 ++----
13 files changed, 14 insertions(+), 28 deletions(-)
diff --git a/src/main/java/com/jnape/palatable/lambda/adt/hlist/HList.java b/src/main/java/com/jnape/palatable/lambda/adt/hlist/HList.java
index 705e43ba..0dc877fc 100644
--- a/src/main/java/com/jnape/palatable/lambda/adt/hlist/HList.java
+++ b/src/main/java/com/jnape/palatable/lambda/adt/hlist/HList.java
@@ -263,8 +263,7 @@ public Tail tail() {
@Override
public final boolean equals(Object other) {
- if (other instanceof HCons) {
- HCons, ?> that = (HCons, ?>) other;
+ if (other instanceof HCons, ?> that) {
return this.head.equals(that.head)
&& this.tail.equals(that.tail);
}
diff --git a/src/main/java/com/jnape/palatable/lambda/adt/hmap/HMap.java b/src/main/java/com/jnape/palatable/lambda/adt/hmap/HMap.java
index 62c922ec..db106f41 100644
--- a/src/main/java/com/jnape/palatable/lambda/adt/hmap/HMap.java
+++ b/src/main/java/com/jnape/palatable/lambda/adt/hmap/HMap.java
@@ -162,8 +162,7 @@ public Collection