Skip to content

Commit 9a7393c

Browse files
committed
- Adding more javadocs
- MonadicFunction fully overrides j.u.f.Function's interface - shuffling around packages - renaming Always to Constantly - general cleanup across the board - left/right reduce are now total - removing experimental continuations from master
1 parent 8aa7f57 commit 9a7393c

File tree

76 files changed

+589
-702
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

76 files changed

+589
-702
lines changed

src/main/java/com/jnape/palatable/lambda/adt/Either.java

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,26 @@
11
package com.jnape.palatable.lambda.adt;
22

3-
import com.jnape.palatable.lambda.applicative.BiFunctor;
4-
import com.jnape.palatable.lambda.applicative.Functor;
53
import com.jnape.palatable.lambda.functions.DyadicFunction;
64
import com.jnape.palatable.lambda.functions.MonadicFunction;
7-
import com.jnape.palatable.lambda.functions.specialized.unchecked.CheckedSupplier;
5+
import com.jnape.palatable.lambda.functions.specialized.checked.CheckedSupplier;
6+
import com.jnape.palatable.lambda.functor.Bifunctor;
7+
import com.jnape.palatable.lambda.functor.Functor;
88

99
import java.util.Objects;
1010
import java.util.Optional;
1111
import java.util.function.Supplier;
1212

1313
import static com.jnape.palatable.lambda.functions.builtin.monadic.Identity.id;
1414

15-
public abstract class Either<L, R> implements Functor<R>, BiFunctor<L, R> {
15+
/**
16+
* The binary tagged union. General semantics tend to connote "success" values via the right value and "failure" values
17+
* via the left values. <code>Either</code>s are both <code>Functor</code>s over their right value and
18+
* <code>Bifunctor</code>s over both values.
19+
*
20+
* @param <L> The left parameter type
21+
* @param <R> The right parameter type
22+
*/
23+
public abstract class Either<L, R> implements Functor<R>, Bifunctor<L, R> {
1624

1725
public final R or(R defaultValue) {
1826
return recover(l -> defaultValue);
@@ -66,13 +74,13 @@ public final <R2> Either<L, R2> fmap(MonadicFunction<? super R, ? extends R2> fn
6674
@Override
6775
@SuppressWarnings("unchecked")
6876
public final <L2> Either<L2, R> biMapL(MonadicFunction<? super L, ? extends L2> fn) {
69-
return (Either<L2, R>) BiFunctor.super.biMapL(fn);
77+
return (Either<L2, R>) Bifunctor.super.biMapL(fn);
7078
}
7179

7280
@Override
7381
@SuppressWarnings("unchecked")
7482
public final <R2> Either<L, R2> biMapR(MonadicFunction<? super R, ? extends R2> fn) {
75-
return (Either<L, R2>) BiFunctor.super.biMapR(fn);
83+
return (Either<L, R2>) Bifunctor.super.biMapR(fn);
7684
}
7785

7886
@Override

src/main/java/com/jnape/palatable/lambda/adt/HList.java

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,15 @@
11
package com.jnape.palatable.lambda.adt;
22

3-
import com.jnape.palatable.lambda.applicative.Functor;
43
import com.jnape.palatable.lambda.functions.MonadicFunction;
5-
4+
import com.jnape.palatable.lambda.functor.Functor;
5+
6+
/**
7+
* A heterogeneous list supporting arbitrary depth type-safety via a linearly recursive type signature. Note that due to
8+
* its rapidly expanding type signature, specializations exist up to certain depths to minimize typing overhead.
9+
*
10+
* @param <Head> The head element type
11+
* @param <Tail> The encoded recursive tail HList type
12+
*/
613
public abstract class HList<Head, Tail extends HList<?, ?>> {
714

815
private HList() {

src/main/java/com/jnape/palatable/lambda/adt/tuples/Tuple2.java

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,26 @@
11
package com.jnape.palatable.lambda.adt.tuples;
22

3-
import com.jnape.palatable.lambda.applicative.BiFunctor;
4-
import com.jnape.palatable.lambda.applicative.Functor;
53
import com.jnape.palatable.lambda.functions.MonadicFunction;
4+
import com.jnape.palatable.lambda.functor.Bifunctor;
5+
import com.jnape.palatable.lambda.functor.Functor;
66

77
import java.util.Objects;
88

99
import static java.lang.String.format;
1010

11-
public class Tuple2<_1, _2> implements Functor<_2>, BiFunctor<_1, _2> {
11+
/**
12+
* The binary tuple product type. Tuple2
13+
*
14+
* @param <_1> The first slot element type
15+
* @param <_2> The second slot element type
16+
* @see Tuple3
17+
*/
18+
public class Tuple2<_1, _2> implements Functor<_2>, Bifunctor<_1, _2> {
1219

1320
public final _1 _1;
1421
public final _2 _2;
1522

16-
public Tuple2(_1 _1, _2 _2) {
23+
Tuple2(_1 _1, _2 _2) {
1724
this._1 = _1;
1825
this._2 = _2;
1926
}
@@ -32,13 +39,13 @@ public <_1A, _2A> Tuple2<_1A, _2A> biMap(MonadicFunction<? super _1, ? extends _
3239
@Override
3340
@SuppressWarnings("unchecked")
3441
public <_1A> Tuple2<_1A, _2> biMapL(MonadicFunction<? super _1, ? extends _1A> fn) {
35-
return (Tuple2<_1A, _2>) BiFunctor.super.biMapL(fn);
42+
return (Tuple2<_1A, _2>) Bifunctor.super.biMapL(fn);
3643
}
3744

3845
@Override
3946
@SuppressWarnings("unchecked")
4047
public <_2A> Tuple2<_1, _2A> biMapR(MonadicFunction<? super _2, ? extends _2A> fn) {
41-
return (Tuple2<_1, _2A>) BiFunctor.super.biMapR(fn);
48+
return (Tuple2<_1, _2A>) Bifunctor.super.biMapR(fn);
4249
}
4350

4451
@Override

src/main/java/com/jnape/palatable/lambda/adt/tuples/Tuple3.java

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,19 @@
66

77
import static java.lang.String.format;
88

9+
/**
10+
* The ternary tuple product type. This class extends <code>{@link Tuple2}</code> and as such embodies the same
11+
* functorial properties.
12+
*
13+
* @param <_1> The first slot element type
14+
* @param <_2> The second slot element type
15+
* @param <_3> The third slot element type
16+
*/
917
public class Tuple3<_1, _2, _3> extends Tuple2<_1, _2> {
1018

1119
public final _3 _3;
1220

13-
public Tuple3(_1 _1, _2 _2, _3 _3) {
21+
Tuple3(_1 _1, _2 _2, _3 _3) {
1422
super(_1, _2);
1523
this._3 = _3;
1624
}

src/main/java/com/jnape/palatable/lambda/applicative/BiFunctor.java

Lines changed: 0 additions & 20 deletions
This file was deleted.

src/main/java/com/jnape/palatable/lambda/applicative/Functor.java

Lines changed: 0 additions & 9 deletions
This file was deleted.

src/main/java/com/jnape/palatable/lambda/applicative/ProFunctor.java

Lines changed: 0 additions & 20 deletions
This file was deleted.

src/main/java/com/jnape/palatable/lambda/continuation/Continuation.java

Lines changed: 0 additions & 37 deletions
This file was deleted.

src/main/java/com/jnape/palatable/lambda/continuation/ContinuationIterator.java

Lines changed: 0 additions & 33 deletions
This file was deleted.

src/main/java/com/jnape/palatable/lambda/continuation/Continuations.java

Lines changed: 0 additions & 29 deletions
This file was deleted.

0 commit comments

Comments
 (0)