Skip to content

Commit 64ad2e9

Browse files
committed
Added conversion functions between types
1 parent 8ed2662 commit 64ad2e9

File tree

2 files changed

+66
-1
lines changed

2 files changed

+66
-1
lines changed

core/src/main/java/fj/data/Conversions.java

Lines changed: 53 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,13 @@
11
package fj.data;
22

3-
import fj.Effect;
43
import fj.F;
4+
import fj.P;
55
import fj.P1;
6+
import fj.Unit;
7+
import fj.function.Effect0;
68
import fj.function.Effect1;
79

10+
import static fj.Unit.unit;
811
import static fj.data.List.asString;
912
import static fj.data.List.fromString;
1013

@@ -391,6 +394,43 @@ public StringBuilder f(final Option<Character> o) {
391394

392395
// END Option ->
393396

397+
// BEGIN Effect
398+
399+
public static F<Effect0, P1<Unit>> Effect0_P1() {
400+
return e -> Effect0_P1(e);
401+
}
402+
403+
public static P1<Unit> Effect0_P1(Effect0 e) {
404+
return P.lazy(u -> {
405+
e.f();
406+
return unit();
407+
});
408+
}
409+
410+
public static IO<Unit> Effect_IO(Effect0 e) {
411+
return () ->{
412+
e.f();
413+
return Unit.unit();
414+
};
415+
}
416+
417+
public static F<Effect0, IO<Unit>> Effect_IO() {
418+
return e -> Effect_IO(e);
419+
}
420+
421+
public static SafeIO<Unit> Effect_SafeIO(Effect0 e) {
422+
return () -> {
423+
e.f();
424+
return unit();
425+
};
426+
}
427+
428+
public static F<Effect0, SafeIO<Unit>> Effect_SafeIO() {
429+
return e -> Effect_SafeIO(e);
430+
}
431+
432+
// END Effect
433+
394434
// BEGIN Either ->
395435

396436
/**
@@ -577,6 +617,18 @@ public StringBuilder f(final Either<A, Character> e) {
577617

578618
// END Either ->
579619

620+
// BEGIN F
621+
622+
public static <A> SafeIO<A> F_SafeIO(F<Unit, A> f) {
623+
return () -> f.f(unit());
624+
}
625+
626+
public static <A> F<F<Unit, A>, SafeIO<A>> F_SafeIO() {
627+
return f -> F_SafeIO(f);
628+
}
629+
630+
// END F
631+
580632
// BEGIN String ->
581633

582634
/**

java8/src/main/java/fj/data/Java8.java

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77

88
import java.util.Optional;
99
import java.util.function.BiFunction;
10+
import java.util.function.Consumer;
1011
import java.util.function.Function;
1112
import java.util.function.Supplier;
1213

@@ -107,4 +108,16 @@ static public <A> F<Option<A>, Optional<A>> Option_Optional() {
107108
return o -> o.isSome() ? Optional.ofNullable(o.some()) : Optional.empty();
108109
}
109110

111+
static public <A> F<Consumer<A>, F<A, Unit>> Consumer_F() {
112+
return c -> Consumer_F(c);
113+
}
114+
115+
public static <A> F<A, Unit> Consumer_F(Consumer<A> c) {
116+
return a -> {
117+
c.accept(a);
118+
return Unit.unit();
119+
};
120+
}
121+
122+
110123
}

0 commit comments

Comments
 (0)