import java.util.Objects;
import java.util.Optional;
import java.util.function.BiFunction;
import java.util.function.Function;
import java.util.function.Supplier;
import java.util.stream.Stream;
@FunctionalInterface
interface Selector<TYPE> {
Object $get
(Function
<TYPE, Object
> function
);
@SuppressWarnings("unchecked")
public default <VALUE> VALUE get(Function<TYPE, VALUE> function) {
return (VALUE) $get(
(Function<TYPE, Object>) function
);
}
public default TYPE from(Selector<TYPE> selector) {
}
public default <VALUE> TYPE with(Function<TYPE, ? extends VALUE> function, VALUE value) {
return from(f -> (f == function)
? value
: get(f)
);
}
public static <TYPE
> Object none
(Function
<TYPE, Object
> function
) { }
}
interface Cons<ELEMENT> {
public ELEMENT getElement();
public Cell<ELEMENT> getNext();
public Implementation<ELEMENT> getImplementation();
public Cons<ELEMENT> withElement(ELEMENT element);
public Cons<ELEMENT> withNext(Cell<ELEMENT> next);
public Cons<ELEMENT> withImplementation(Implementation<ELEMENT> implementation);
@FunctionalInterface
public interface Implementation<ELEMENT> {
public <VALUE> VALUE select(ELEMENT element, Cell<ELEMENT> next, BiFunction<? super ELEMENT, Cell<ELEMENT>, ? extends VALUE> cons, Supplier<? extends VALUE> nil);
}
public default <VALUE> VALUE cons(BiFunction<? super ELEMENT, Cell<ELEMENT>, ? extends VALUE> cons, Supplier<? extends VALUE> nil) {
return getImplementation()
.select(
getElement(),
getNext(),
cons,
nil
)
;
}
public static <ELEMENT> Cons<ELEMENT> none() {
return $Cons.none();
}
}
@FunctionalInterface
interface $Cons<ELEMENT> extends Cons<ELEMENT>, Selector<Cons<ELEMENT>> {
public static <ELEMENT
> Function
<Cons
<ELEMENT
>, ELEMENT
> Element() { return Cons::getElement;
}
public static <ELEMENT> Function<Cons<ELEMENT>, Cell<ELEMENT>> Next() {
return Cons::getNext;
}
public static <ELEMENT> Function<Cons<ELEMENT>, Implementation<ELEMENT>> Implementation() {
return Cons::getImplementation;
}
@Override
public default ELEMENT getElement() {
}
@Override
public default Cell<ELEMENT> getNext() {
return get(Next());
}
@Override
public default Implementation<ELEMENT> getImplementation() {
return get(Implementation());
}
@Override
public default Cons<ELEMENT> withElement(ELEMENT element) {
}
@Override
public default Cons<ELEMENT> withNext(Cell<ELEMENT> next) {
return with(Next(), next);
}
@Override
public default Cons<ELEMENT> withImplementation(Implementation<ELEMENT> implementation) {
return with(Implementation(), implementation);
}
@Override
public default Cons<ELEMENT> from(Selector<Cons<ELEMENT>> selector) {
return ($Cons<ELEMENT>) selector::get;
}
public static <ELEMENT> $Cons<ELEMENT> none() {
return Selector::none;
}
}
@FunctionalInterface
interface Cell<ELEMENT> {
public <VALUE> VALUE select(BiFunction<? super ELEMENT, Cell<ELEMENT>, ? extends VALUE> cons, Supplier<? extends VALUE> nil);
public default int size() {
return select(
(element, next) -> 1 + next.size(),
() -> 0
);
}
public default Cell<ELEMENT> first(int size) {
return Optional.of(size)
.<Cell<ELEMENT>>map(s -> select(
(element, next) -> s == 0
? nil()
: cons(element, next.first(s - 1))
,
Cell::nil
))
;
}
public default <ELEMENT2> Cell<ELEMENT2> map(Function<? super ELEMENT, ? extends ELEMENT2> mapper) {
return select(
(element, next) -> Cell.cons(mapper.apply(element), next.map(mapper)),
Cell::nil
);
}
public default <ELEMENT2> Cell<ELEMENT2> flatMap(Function<? super ELEMENT, Cell<ELEMENT2>> mapper) {
return select(
(element, next) -> mapper
.apply(element)
.select(
Cell::cons,
() -> next.flatMap(mapper)
)
,
Cell::nil
);
}
public static <ELEMENT, VALUE> VALUE nil(BiFunction<? super ELEMENT, Cell<ELEMENT>, ? extends VALUE> cons, Supplier<? extends VALUE> nil) {
return nil.get();
}
public static <ELEMENT, VALUE> VALUE cons(ELEMENT element, Cell<ELEMENT> next, BiFunction<? super ELEMENT, Cell<ELEMENT>, ? extends VALUE> cons, Supplier<? extends VALUE> nil) {
return cons.apply(element, next);
}
public static <ELEMENT> Cell<ELEMENT> nil() {
return Cell::nil;
}
public static <ELEMENT> Cell<ELEMENT> cons(ELEMENT element, Cell<ELEMENT> next) {
Stream.of(
element,
next
)
.forEach(Objects::requireNonNull)
;
return Cons.<ELEMENT>none()
.withElement(element)
.withNext(next)
.withImplementation(Cell::cons)
::cons
;
}
public static void main
(String...
arguments) { Cell<Integer> cell =
cons(1, cons(2, cons(3, nil())))
;
System.
out.
println(nil
() == nil
()); // true System.
out.
println(cell.
size() == 3); // true System.
out.
println(cell.
first(2).
size() == 2); // true }
}
public interface Main {
public static void main
(String...
arguments) { Cell.main(arguments);
}
}
aW1wb3J0IGphdmEudXRpbC5PYmplY3RzOwppbXBvcnQgamF2YS51dGlsLk9wdGlvbmFsOwppbXBvcnQgamF2YS51dGlsLmZ1bmN0aW9uLkJpRnVuY3Rpb247CmltcG9ydCBqYXZhLnV0aWwuZnVuY3Rpb24uRnVuY3Rpb247CmltcG9ydCBqYXZhLnV0aWwuZnVuY3Rpb24uU3VwcGxpZXI7CmltcG9ydCBqYXZhLnV0aWwuc3RyZWFtLlN0cmVhbTsKCkBGdW5jdGlvbmFsSW50ZXJmYWNlCmludGVyZmFjZSBTZWxlY3RvcjxUWVBFPiB7CiAgT2JqZWN0ICRnZXQoRnVuY3Rpb248VFlQRSwgT2JqZWN0PiBmdW5jdGlvbik7CgogIEBTdXBwcmVzc1dhcm5pbmdzKCJ1bmNoZWNrZWQiKQogIHB1YmxpYyBkZWZhdWx0IDxWQUxVRT4gVkFMVUUgZ2V0KEZ1bmN0aW9uPFRZUEUsIFZBTFVFPiBmdW5jdGlvbikgewogICAgcmV0dXJuIChWQUxVRSkgJGdldCgKICAgICAgKEZ1bmN0aW9uPFRZUEUsIE9iamVjdD4pIGZ1bmN0aW9uCiAgICApOwogIH0KCiAgcHVibGljIGRlZmF1bHQgVFlQRSBmcm9tKFNlbGVjdG9yPFRZUEU+IHNlbGVjdG9yKSB7CiAgICB0aHJvdyBuZXcgSW50ZXJuYWxFcnJvcigiU2VsZWN0b3I6OmZyb20gaXMgbm90IGltcGxlbWVudGVkLiIpOwogIH0KCiAgcHVibGljIGRlZmF1bHQgPFZBTFVFPiBUWVBFIHdpdGgoRnVuY3Rpb248VFlQRSwgPyBleHRlbmRzIFZBTFVFPiBmdW5jdGlvbiwgVkFMVUUgdmFsdWUpIHsKICAgIHJldHVybiBmcm9tKGYgLT4gKGYgPT0gZnVuY3Rpb24pCiAgICAgID8gdmFsdWUKICAgICAgOiBnZXQoZikKICAgICk7CiAgfQoKICBwdWJsaWMgc3RhdGljIDxUWVBFPiBPYmplY3Qgbm9uZShGdW5jdGlvbjxUWVBFLCBPYmplY3Q+IGZ1bmN0aW9uKSB7CiAgICB0aHJvdyBuZXcgSWxsZWdhbFN0YXRlRXhjZXB0aW9uKCJubyB2YWx1ZSIpOwogIH0KfQoKaW50ZXJmYWNlIENvbnM8RUxFTUVOVD4gewogIHB1YmxpYyBFTEVNRU5UIGdldEVsZW1lbnQoKTsKICBwdWJsaWMgQ2VsbDxFTEVNRU5UPiBnZXROZXh0KCk7CiAgcHVibGljIEltcGxlbWVudGF0aW9uPEVMRU1FTlQ+IGdldEltcGxlbWVudGF0aW9uKCk7CgogIHB1YmxpYyBDb25zPEVMRU1FTlQ+IHdpdGhFbGVtZW50KEVMRU1FTlQgZWxlbWVudCk7CiAgcHVibGljIENvbnM8RUxFTUVOVD4gd2l0aE5leHQoQ2VsbDxFTEVNRU5UPiBuZXh0KTsKICBwdWJsaWMgQ29uczxFTEVNRU5UPiB3aXRoSW1wbGVtZW50YXRpb24oSW1wbGVtZW50YXRpb248RUxFTUVOVD4gaW1wbGVtZW50YXRpb24pOwoKICBARnVuY3Rpb25hbEludGVyZmFjZQogIHB1YmxpYyBpbnRlcmZhY2UgSW1wbGVtZW50YXRpb248RUxFTUVOVD4gewogICAgcHVibGljIDxWQUxVRT4gVkFMVUUgc2VsZWN0KEVMRU1FTlQgZWxlbWVudCwgQ2VsbDxFTEVNRU5UPiBuZXh0LCBCaUZ1bmN0aW9uPD8gc3VwZXIgRUxFTUVOVCwgQ2VsbDxFTEVNRU5UPiwgPyBleHRlbmRzIFZBTFVFPiBjb25zLCBTdXBwbGllcjw/IGV4dGVuZHMgVkFMVUU+IG5pbCk7CiAgfQoKICBwdWJsaWMgZGVmYXVsdCA8VkFMVUU+IFZBTFVFIGNvbnMoQmlGdW5jdGlvbjw/IHN1cGVyIEVMRU1FTlQsIENlbGw8RUxFTUVOVD4sID8gZXh0ZW5kcyBWQUxVRT4gY29ucywgU3VwcGxpZXI8PyBleHRlbmRzIFZBTFVFPiBuaWwpIHsKICAgIHJldHVybiBnZXRJbXBsZW1lbnRhdGlvbigpCiAgICAgIC5zZWxlY3QoCiAgICAgICAgZ2V0RWxlbWVudCgpLAogICAgICAgIGdldE5leHQoKSwKICAgICAgICBjb25zLAogICAgICAgIG5pbAogICAgICApCiAgICA7CiAgfQoKICBwdWJsaWMgc3RhdGljIDxFTEVNRU5UPiBDb25zPEVMRU1FTlQ+IG5vbmUoKSB7CiAgICByZXR1cm4gJENvbnMubm9uZSgpOwogIH0KfQoKQEZ1bmN0aW9uYWxJbnRlcmZhY2UKaW50ZXJmYWNlICRDb25zPEVMRU1FTlQ+IGV4dGVuZHMgQ29uczxFTEVNRU5UPiwgU2VsZWN0b3I8Q29uczxFTEVNRU5UPj4gewogIHB1YmxpYyBzdGF0aWMgPEVMRU1FTlQ+IEZ1bmN0aW9uPENvbnM8RUxFTUVOVD4sIEVMRU1FTlQ+IEVsZW1lbnQoKSB7CiAgICByZXR1cm4gQ29uczo6Z2V0RWxlbWVudDsKICB9CgogIHB1YmxpYyBzdGF0aWMgPEVMRU1FTlQ+IEZ1bmN0aW9uPENvbnM8RUxFTUVOVD4sIENlbGw8RUxFTUVOVD4+IE5leHQoKSB7CiAgICByZXR1cm4gQ29uczo6Z2V0TmV4dDsKICB9CgogIHB1YmxpYyBzdGF0aWMgPEVMRU1FTlQ+IEZ1bmN0aW9uPENvbnM8RUxFTUVOVD4sIEltcGxlbWVudGF0aW9uPEVMRU1FTlQ+PiBJbXBsZW1lbnRhdGlvbigpIHsKICAgIHJldHVybiBDb25zOjpnZXRJbXBsZW1lbnRhdGlvbjsKICB9CgogIEBPdmVycmlkZQogIHB1YmxpYyBkZWZhdWx0IEVMRU1FTlQgZ2V0RWxlbWVudCgpIHsKICAgIHJldHVybiBnZXQoRWxlbWVudCgpKTsKICB9CgogIEBPdmVycmlkZQogIHB1YmxpYyBkZWZhdWx0IENlbGw8RUxFTUVOVD4gZ2V0TmV4dCgpIHsKICAgIHJldHVybiBnZXQoTmV4dCgpKTsKICB9CgogIEBPdmVycmlkZQogIHB1YmxpYyBkZWZhdWx0IEltcGxlbWVudGF0aW9uPEVMRU1FTlQ+IGdldEltcGxlbWVudGF0aW9uKCkgewogICAgcmV0dXJuIGdldChJbXBsZW1lbnRhdGlvbigpKTsKICB9CgogIEBPdmVycmlkZQogIHB1YmxpYyBkZWZhdWx0IENvbnM8RUxFTUVOVD4gd2l0aEVsZW1lbnQoRUxFTUVOVCBlbGVtZW50KSB7CiAgICByZXR1cm4gd2l0aChFbGVtZW50KCksIGVsZW1lbnQpOwogIH0KCiAgQE92ZXJyaWRlCiAgcHVibGljIGRlZmF1bHQgQ29uczxFTEVNRU5UPiB3aXRoTmV4dChDZWxsPEVMRU1FTlQ+IG5leHQpIHsKICAgIHJldHVybiB3aXRoKE5leHQoKSwgbmV4dCk7CiAgfQoKICBAT3ZlcnJpZGUKICBwdWJsaWMgZGVmYXVsdCBDb25zPEVMRU1FTlQ+IHdpdGhJbXBsZW1lbnRhdGlvbihJbXBsZW1lbnRhdGlvbjxFTEVNRU5UPiBpbXBsZW1lbnRhdGlvbikgewogICAgcmV0dXJuIHdpdGgoSW1wbGVtZW50YXRpb24oKSwgaW1wbGVtZW50YXRpb24pOwogIH0KCiAgQE92ZXJyaWRlCiAgcHVibGljIGRlZmF1bHQgQ29uczxFTEVNRU5UPiBmcm9tKFNlbGVjdG9yPENvbnM8RUxFTUVOVD4+IHNlbGVjdG9yKSB7CiAgICByZXR1cm4gKCRDb25zPEVMRU1FTlQ+KSBzZWxlY3Rvcjo6Z2V0OwogIH0KCiAgcHVibGljIHN0YXRpYyA8RUxFTUVOVD4gJENvbnM8RUxFTUVOVD4gbm9uZSgpIHsKICAgIHJldHVybiBTZWxlY3Rvcjo6bm9uZTsKICB9Cn0KCkBGdW5jdGlvbmFsSW50ZXJmYWNlCmludGVyZmFjZSBDZWxsPEVMRU1FTlQ+IHsKICBwdWJsaWMgPFZBTFVFPiBWQUxVRSBzZWxlY3QoQmlGdW5jdGlvbjw/IHN1cGVyIEVMRU1FTlQsIENlbGw8RUxFTUVOVD4sID8gZXh0ZW5kcyBWQUxVRT4gY29ucywgU3VwcGxpZXI8PyBleHRlbmRzIFZBTFVFPiBuaWwpOwoKICBwdWJsaWMgZGVmYXVsdCBpbnQgc2l6ZSgpIHsKICAgIHJldHVybiBzZWxlY3QoCiAgICAgIChlbGVtZW50LCBuZXh0KSAtPiAxICsgbmV4dC5zaXplKCksCiAgICAgICgpIC0+IDAKICAgICk7CiAgfQoKICBwdWJsaWMgZGVmYXVsdCBDZWxsPEVMRU1FTlQ+IGZpcnN0KGludCBzaXplKSB7CiAgICByZXR1cm4gT3B0aW9uYWwub2Yoc2l6ZSkKICAgICAgLjxDZWxsPEVMRU1FTlQ+Pm1hcChzIC0+IHNlbGVjdCgKICAgICAgICAoZWxlbWVudCwgbmV4dCkgLT4gcyA9PSAwCiAgICAgICAgICA/IG5pbCgpCiAgICAgICAgICA6IGNvbnMoZWxlbWVudCwgbmV4dC5maXJzdChzIC0gMSkpCiAgICAgICAgLAogICAgICAgIENlbGw6Om5pbAogICAgICApKQogICAgICAub3JFbHNlVGhyb3coSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uOjpuZXcpCiAgICA7CiAgfQoKICBwdWJsaWMgZGVmYXVsdCA8RUxFTUVOVDI+IENlbGw8RUxFTUVOVDI+IG1hcChGdW5jdGlvbjw/IHN1cGVyIEVMRU1FTlQsID8gZXh0ZW5kcyBFTEVNRU5UMj4gbWFwcGVyKSB7CiAgICByZXR1cm4gc2VsZWN0KAogICAgICAoZWxlbWVudCwgbmV4dCkgLT4gQ2VsbC5jb25zKG1hcHBlci5hcHBseShlbGVtZW50KSwgbmV4dC5tYXAobWFwcGVyKSksCiAgICAgIENlbGw6Om5pbAogICAgKTsKICB9CgogIHB1YmxpYyBkZWZhdWx0IDxFTEVNRU5UMj4gQ2VsbDxFTEVNRU5UMj4gZmxhdE1hcChGdW5jdGlvbjw/IHN1cGVyIEVMRU1FTlQsIENlbGw8RUxFTUVOVDI+PiBtYXBwZXIpIHsKICAgIHJldHVybiBzZWxlY3QoCiAgICAgIChlbGVtZW50LCBuZXh0KSAtPiBtYXBwZXIKICAgICAgICAuYXBwbHkoZWxlbWVudCkKICAgICAgICAuc2VsZWN0KAogICAgICAgICAgQ2VsbDo6Y29ucywKICAgICAgICAgICgpIC0+IG5leHQuZmxhdE1hcChtYXBwZXIpCiAgICAgICAgKQogICAgICAsCiAgICAgIENlbGw6Om5pbAogICAgKTsKICB9CgogIHB1YmxpYyBzdGF0aWMgPEVMRU1FTlQsIFZBTFVFPiBWQUxVRSBuaWwoQmlGdW5jdGlvbjw/IHN1cGVyIEVMRU1FTlQsIENlbGw8RUxFTUVOVD4sID8gZXh0ZW5kcyBWQUxVRT4gY29ucywgU3VwcGxpZXI8PyBleHRlbmRzIFZBTFVFPiBuaWwpIHsKICAgIHJldHVybiBuaWwuZ2V0KCk7CiAgfQoKICBwdWJsaWMgc3RhdGljIDxFTEVNRU5ULCBWQUxVRT4gVkFMVUUgY29ucyhFTEVNRU5UIGVsZW1lbnQsIENlbGw8RUxFTUVOVD4gbmV4dCwgQmlGdW5jdGlvbjw/IHN1cGVyIEVMRU1FTlQsIENlbGw8RUxFTUVOVD4sID8gZXh0ZW5kcyBWQUxVRT4gY29ucywgU3VwcGxpZXI8PyBleHRlbmRzIFZBTFVFPiBuaWwpIHsKICAgIHJldHVybiBjb25zLmFwcGx5KGVsZW1lbnQsIG5leHQpOwogIH0KCiAgcHVibGljIHN0YXRpYyA8RUxFTUVOVD4gQ2VsbDxFTEVNRU5UPiBuaWwoKSB7CiAgICByZXR1cm4gQ2VsbDo6bmlsOwogIH0KCiAgcHVibGljIHN0YXRpYyA8RUxFTUVOVD4gQ2VsbDxFTEVNRU5UPiBjb25zKEVMRU1FTlQgZWxlbWVudCwgQ2VsbDxFTEVNRU5UPiBuZXh0KSB7CiAgICBTdHJlYW0ub2YoCiAgICAgIGVsZW1lbnQsCiAgICAgIG5leHQKICAgICkKICAgICAgLmZvckVhY2goT2JqZWN0czo6cmVxdWlyZU5vbk51bGwpCiAgICA7CiAgICByZXR1cm4gQ29ucy48RUxFTUVOVD5ub25lKCkKICAgICAgLndpdGhFbGVtZW50KGVsZW1lbnQpCiAgICAgIC53aXRoTmV4dChuZXh0KQogICAgICAud2l0aEltcGxlbWVudGF0aW9uKENlbGw6OmNvbnMpCiAgICAgIDo6Y29ucwogICAgOwogIH0KCiAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nLi4uIGFyZ3VtZW50cykgewogICAgQ2VsbDxJbnRlZ2VyPiBjZWxsID0KICAgICAgY29ucygxLCBjb25zKDIsIGNvbnMoMywgbmlsKCkpKSkKICAgIDsKICAgIFN5c3RlbS5vdXQucHJpbnRsbihuaWwoKSA9PSBuaWwoKSk7ICAvLyB0cnVlCiAgICBTeXN0ZW0ub3V0LnByaW50bG4oY2VsbC5zaXplKCkgPT0gMyk7ICAvLyB0cnVlCiAgICBTeXN0ZW0ub3V0LnByaW50bG4oY2VsbC5maXJzdCgyKS5zaXplKCkgPT0gMik7ICAvLyB0cnVlCiAgfQp9CgpwdWJsaWMgaW50ZXJmYWNlIE1haW4gewogIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZy4uLiBhcmd1bWVudHMpIHsKICAgIENlbGwubWFpbihhcmd1bWVudHMpOwogIH0KfQ==
Main.java:13: error: illegal start of type
public default <VALUE> VALUE get(Function<TYPE, VALUE> function) {
^
Main.java:13: error: = expected
public default <VALUE> VALUE get(Function<TYPE, VALUE> function) {
^
Main.java:13: error: ';' expected
public default <VALUE> VALUE get(Function<TYPE, VALUE> function) {
^
Main.java:13: error: illegal start of type
public default <VALUE> VALUE get(Function<TYPE, VALUE> function) {
^
Main.java:13: error: = expected
public default <VALUE> VALUE get(Function<TYPE, VALUE> function) {
^
Main.java:13: error: illegal start of type
public default <VALUE> VALUE get(Function<TYPE, VALUE> function) {
^
Main.java:13: error: = expected
public default <VALUE> VALUE get(Function<TYPE, VALUE> function) {
^
Main.java:13: error: <identifier> expected
public default <VALUE> VALUE get(Function<TYPE, VALUE> function) {
^
Main.java:13: error: ';' expected
public default <VALUE> VALUE get(Function<TYPE, VALUE> function) {
^
Main.java:13: error: illegal start of type
public default <VALUE> VALUE get(Function<TYPE, VALUE> function) {
^
Main.java:13: error: = expected
public default <VALUE> VALUE get(Function<TYPE, VALUE> function) {
^
Main.java:13: error: illegal start of type
public default <VALUE> VALUE get(Function<TYPE, VALUE> function) {
^
Main.java:13: error: <identifier> expected
public default <VALUE> VALUE get(Function<TYPE, VALUE> function) {
^
Main.java:14: error: <identifier> expected
return (VALUE) $get(
^
Main.java:14: error: ';' expected
return (VALUE) $get(
^
Main.java:15: error: illegal start of type
(Function<TYPE, Object>) function
^
Main.java:15: error: '(' expected
(Function<TYPE, Object>) function
^
Main.java:16: error: illegal start of type
);
^
Main.java:16: error: <identifier> expected
);
^
Main.java:17: error: = expected
}
^
Main.java:17: error: ';' expected
}
^
Main.java:19: error: illegal start of type
public default TYPE from(Selector<TYPE> selector) {
^
Main.java:19: error: = expected
public default TYPE from(Selector<TYPE> selector) {
^
Main.java:19: error: illegal start of type
public default TYPE from(Selector<TYPE> selector) {
^
Main.java:19: error: = expected
public default TYPE from(Selector<TYPE> selector) {
^
Main.java:19: error: <identifier> expected
public default TYPE from(Selector<TYPE> selector) {
^
Main.java:19: error: ';' expected
public default TYPE from(Selector<TYPE> selector) {
^
Main.java:19: error: illegal start of type
public default TYPE from(Selector<TYPE> selector) {
^
Main.java:19: error: <identifier> expected
public default TYPE from(Selector<TYPE> selector) {
^
Main.java:20: error: = expected
throw new InternalError("Selector::from is not implemented.");
^
Main.java:20: error: ';' expected
throw new InternalError("Selector::from is not implemented.");
^
Main.java:20: error: <identifier> expected
throw new InternalError("Selector::from is not implemented.");
^
Main.java:20: error: illegal start of type
throw new InternalError("Selector::from is not implemented.");
^
Main.java:23: error: class, interface, or enum expected
public default <VALUE> TYPE with(Function<TYPE, ? extends VALUE> function, VALUE value) {
^
Main.java:28: error: class, interface, or enum expected
}
^
Main.java:30: error: class, interface, or enum expected
public static <TYPE> Object none(Function<TYPE, Object> function) {
^
Main.java:32: error: class, interface, or enum expected
}
^
Main.java:49: error: illegal start of type
public default <VALUE> VALUE cons(BiFunction<? super ELEMENT, Cell<ELEMENT>, ? extends VALUE> cons, Supplier<? extends VALUE> nil) {
^
Main.java:49: error: = expected
public default <VALUE> VALUE cons(BiFunction<? super ELEMENT, Cell<ELEMENT>, ? extends VALUE> cons, Supplier<? extends VALUE> nil) {
^
Main.java:49: error: ';' expected
public default <VALUE> VALUE cons(BiFunction<? super ELEMENT, Cell<ELEMENT>, ? extends VALUE> cons, Supplier<? extends VALUE> nil) {
^
Main.java:49: error: illegal start of type
public default <VALUE> VALUE cons(BiFunction<? super ELEMENT, Cell<ELEMENT>, ? extends VALUE> cons, Supplier<? extends VALUE> nil) {
^
Main.java:49: error: = expected
public default <VALUE> VALUE cons(BiFunction<? super ELEMENT, Cell<ELEMENT>, ? extends VALUE> cons, Supplier<? extends VALUE> nil) {
^
Main.java:49: error: illegal start of type
public default <VALUE> VALUE cons(BiFunction<? super ELEMENT, Cell<ELEMENT>, ? extends VALUE> cons, Supplier<? extends VALUE> nil) {
^
Main.java:49: error: = expected
public default <VALUE> VALUE cons(BiFunction<? super ELEMENT, Cell<ELEMENT>, ? extends VALUE> cons, Supplier<? extends VALUE> nil) {
^
Main.java:49: error: illegal start of type
public default <VALUE> VALUE cons(BiFunction<? super ELEMENT, Cell<ELEMENT>, ? extends VALUE> cons, Supplier<? extends VALUE> nil) {
^
Main.java:49: error: <identifier> expected
public default <VALUE> VALUE cons(BiFunction<? super ELEMENT, Cell<ELEMENT>, ? extends VALUE> cons, Supplier<? extends VALUE> nil) {
^
Main.java:49: error: = expected
public default <VALUE> VALUE cons(BiFunction<? super ELEMENT, Cell<ELEMENT>, ? extends VALUE> cons, Supplier<? extends VALUE> nil) {
^
Main.java:49: error: = expected
public default <VALUE> VALUE cons(BiFunction<? super ELEMENT, Cell<ELEMENT>, ? extends VALUE> cons, Supplier<? extends VALUE> nil) {
^
Main.java:49: error: <identifier> expected
public default <VALUE> VALUE cons(BiFunction<? super ELEMENT, Cell<ELEMENT>, ? extends VALUE> cons, Supplier<? extends VALUE> nil) {
^
Main.java:49: error: <identifier> expected
public default <VALUE> VALUE cons(BiFunction<? super ELEMENT, Cell<ELEMENT>, ? extends VALUE> cons, Supplier<? extends VALUE> nil) {
^
Main.java:49: error: = expected
public default <VALUE> VALUE cons(BiFunction<? super ELEMENT, Cell<ELEMENT>, ? extends VALUE> cons, Supplier<? extends VALUE> nil) {
^
Main.java:49: error: ';' expected
public default <VALUE> VALUE cons(BiFunction<? super ELEMENT, Cell<ELEMENT>, ? extends VALUE> cons, Supplier<? extends VALUE> nil) {
^
Main.java:49: error: <identifier> expected
public default <VALUE> VALUE cons(BiFunction<? super ELEMENT, Cell<ELEMENT>, ? extends VALUE> cons, Supplier<? extends VALUE> nil) {
^
Main.java:49: error: ';' expected
public default <VALUE> VALUE cons(BiFunction<? super ELEMENT, Cell<ELEMENT>, ? extends VALUE> cons, Supplier<? extends VALUE> nil) {
^
Main.java:49: error: illegal start of type
public default <VALUE> VALUE cons(BiFunction<? super ELEMENT, Cell<ELEMENT>, ? extends VALUE> cons, Supplier<? extends VALUE> nil) {
^
Main.java:49: error: = expected
public default <VALUE> VALUE cons(BiFunction<? super ELEMENT, Cell<ELEMENT>, ? extends VALUE> cons, Supplier<? extends VALUE> nil) {
^
Main.java:49: error: illegal start of type
public default <VALUE> VALUE cons(BiFunction<? super ELEMENT, Cell<ELEMENT>, ? extends VALUE> cons, Supplier<? extends VALUE> nil) {
^
Main.java:49: error: <identifier> expected
public default <VALUE> VALUE cons(BiFunction<? super ELEMENT, Cell<ELEMENT>, ? extends VALUE> cons, Supplier<? extends VALUE> nil) {
^
Main.java:49: error: = expected
public default <VALUE> VALUE cons(BiFunction<? super ELEMENT, Cell<ELEMENT>, ? extends VALUE> cons, Supplier<? extends VALUE> nil) {
^
Main.java:49: error: ';' expected
public default <VALUE> VALUE cons(BiFunction<? super ELEMENT, Cell<ELEMENT>, ? extends VALUE> cons, Supplier<? extends VALUE> nil) {
^
Main.java:49: error: <identifier> expected
public default <VALUE> VALUE cons(BiFunction<? super ELEMENT, Cell<ELEMENT>, ? extends VALUE> cons, Supplier<? extends VALUE> nil) {
^
Main.java:49: error: ';' expected
public default <VALUE> VALUE cons(BiFunction<? super ELEMENT, Cell<ELEMENT>, ? extends VALUE> cons, Supplier<? extends VALUE> nil) {
^
Main.java:50: error: illegal start of type
return getImplementation()
^
Main.java:50: error: ';' expected
return getImplementation()
^
Main.java:60: error: class, interface, or enum expected
public static <ELEMENT> Cons<ELEMENT> none() {
^
Main.java:62: error: class, interface, or enum expected
}
^
Main.java:68: error: ';' expected
return Cons::getElement;
^
Main.java:68: error: not a statement
return Cons::getElement;
^
Main.java:72: error: ';' expected
return Cons::getNext;
^
Main.java:72: error: not a statement
return Cons::getNext;
^
Main.java:76: error: ';' expected
return Cons::getImplementation;
^
Main.java:76: error: not a statement
return Cons::getImplementation;
^
Main.java:80: error: illegal start of type
public default ELEMENT getElement() {
^
Main.java:80: error: = expected
public default ELEMENT getElement() {
^
Main.java:80: error: ';' expected
public default ELEMENT getElement() {
^
Main.java:80: error: illegal start of type
public default ELEMENT getElement() {
^
Main.java:80: error: <identifier> expected
public default ELEMENT getElement() {
^
Main.java:80: error: = expected
public default ELEMENT getElement() {
^
Main.java:80: error: ';' expected
public default ELEMENT getElement() {
^
Main.java:81: error: <identifier> expected
return get(Element());
^
Main.java:81: error: <identifier> expected
return get(Element());
^
Main.java:81: error: ';' expected
return get(Element());
^
Main.java:81: error: illegal start of type
return get(Element());
^
Main.java:81: error: <identifier> expected
return get(Element());
^
Main.java:82: error: = expected
}
^
Main.java:82: error: ';' expected
}
^
Main.java:84: error: <identifier> expected
@Override
^
Main.java:85: error: = expected
public default Cell<ELEMENT> getNext() {
^
Main.java:85: error: ';' expected
public default Cell<ELEMENT> getNext() {
^
Main.java:90: error: illegal start of type
public default Implementation<ELEMENT> getImplementation() {
^
Main.java:90: error: = expected
public default Implementation<ELEMENT> getImplementation() {
^
Main.java:90: error: ';' expected
public default Implementation<ELEMENT> getImplementation() {
^
Main.java:90: error: <identifier> expected
public default Implementation<ELEMENT> getImplementation() {
^
Main.java:90: error: ';' expected
public default Implementation<ELEMENT> getImplementation() {
^
Main.java:90: error: illegal start of type
public default Implementation<ELEMENT> getImplementation() {
^
Main.java:90: error: <identifier> expected
public default Implementation<ELEMENT> getImplementation() {
^
Main.java:90: error: = expected
public default Implementation<ELEMENT> getImplementation() {
^
Main.java:90: error: ';' expected
public default Implementation<ELEMENT> getImplementation() {
^
Main.java:91: error: <identifier> expected
return get(Implementation());
^
Main.java:91: error: <identifier> expected
return get(Implementation());
^
100 errors