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 FunctionalField<FIELD extends Enum<?>> {
public Object untypedField
(FIELD field
);
@SuppressWarnings("unchecked")
public default <VALUE> VALUE field(FIELD field) {
return (VALUE) untypedField(field);
}
public static <FIELD
extends Enum
<FIELD
>> Object throwOnUndefinedField
(FIELD field
) throws Error { }
}
@FunctionalInterface
interface $Cons<ELEMENT> extends Cons<ELEMENT>, FunctionalField<$Cons.Field> {
element,
next,
implementation
}
@Override
public default ELEMENT element() {
return field
(Field.
element); }
public default Cell<ELEMENT> next() {
return field
(Field.
next); }
public default Implementation<ELEMENT> implementation() {
return field
(Field.
implementation); }
public static <ELEMENT> $Cons<ELEMENT> new_(ELEMENT element, Cell<ELEMENT> next, Implementation<ELEMENT> implementation) {
return field -> {
switch (field) {
case element: return element;
case next: return next;
case implementation: return implementation;
default: return FunctionalField.throwOnUndefinedField(field);
}
};
}
}
interface Cons<ELEMENT> {
public ELEMENT element();
public Cell<ELEMENT> next();
public 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 implementation().select(element(), next(), cons, nil);
}
public static <ELEMENT> Cons<ELEMENT> new_(ELEMENT element, Cell<ELEMENT> next, Implementation<ELEMENT> implementation) {
return $Cons.new_(element, next, implementation);
}
}
@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.new_(
element,
next,
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);
}
}
aW1wb3J0IGphdmEudXRpbC5PYmplY3RzOwppbXBvcnQgamF2YS51dGlsLk9wdGlvbmFsOwppbXBvcnQgamF2YS51dGlsLmZ1bmN0aW9uLkJpRnVuY3Rpb247CmltcG9ydCBqYXZhLnV0aWwuZnVuY3Rpb24uRnVuY3Rpb247CmltcG9ydCBqYXZhLnV0aWwuZnVuY3Rpb24uU3VwcGxpZXI7CmltcG9ydCBqYXZhLnV0aWwuc3RyZWFtLlN0cmVhbTsKCkBGdW5jdGlvbmFsSW50ZXJmYWNlCmludGVyZmFjZSBGdW5jdGlvbmFsRmllbGQ8RklFTEQgZXh0ZW5kcyBFbnVtPD8+PiB7CiAgcHVibGljIE9iamVjdCB1bnR5cGVkRmllbGQoRklFTEQgZmllbGQpOwoKICBAU3VwcHJlc3NXYXJuaW5ncygidW5jaGVja2VkIikKICBwdWJsaWMgZGVmYXVsdCA8VkFMVUU+IFZBTFVFIGZpZWxkKEZJRUxEIGZpZWxkKSB7CiAgICByZXR1cm4gKFZBTFVFKSB1bnR5cGVkRmllbGQoZmllbGQpOwogIH0KCiAgcHVibGljIHN0YXRpYyA8RklFTEQgZXh0ZW5kcyBFbnVtPEZJRUxEPj4gT2JqZWN0IHRocm93T25VbmRlZmluZWRGaWVsZChGSUVMRCBmaWVsZCkgdGhyb3dzIEVycm9yIHsKICAgIHRocm93IG5ldyBJbnRlcm5hbEVycm9yKGZpZWxkICsgIiBpcyB1bmRlZmluZWQiKTsKICB9Cn0KCkBGdW5jdGlvbmFsSW50ZXJmYWNlCmludGVyZmFjZSAkQ29uczxFTEVNRU5UPiBleHRlbmRzIENvbnM8RUxFTUVOVD4sIEZ1bmN0aW9uYWxGaWVsZDwkQ29ucy5GaWVsZD4gewogIHB1YmxpYyBlbnVtIEZpZWxkIHsKICAgIGVsZW1lbnQsCiAgICBuZXh0LAogICAgaW1wbGVtZW50YXRpb24KICB9CgogIEBPdmVycmlkZQogIHB1YmxpYyBkZWZhdWx0IEVMRU1FTlQgZWxlbWVudCgpIHsKICAgIHJldHVybiBmaWVsZChGaWVsZC5lbGVtZW50KTsKICB9CgogIHB1YmxpYyBkZWZhdWx0IENlbGw8RUxFTUVOVD4gbmV4dCgpIHsKICAgIHJldHVybiBmaWVsZChGaWVsZC5uZXh0KTsKICB9CgogIHB1YmxpYyBkZWZhdWx0IEltcGxlbWVudGF0aW9uPEVMRU1FTlQ+IGltcGxlbWVudGF0aW9uKCkgewogICAgcmV0dXJuIGZpZWxkKEZpZWxkLmltcGxlbWVudGF0aW9uKTsKICB9CgogIHB1YmxpYyBzdGF0aWMgPEVMRU1FTlQ+ICRDb25zPEVMRU1FTlQ+IG5ld18oRUxFTUVOVCBlbGVtZW50LCBDZWxsPEVMRU1FTlQ+IG5leHQsIEltcGxlbWVudGF0aW9uPEVMRU1FTlQ+IGltcGxlbWVudGF0aW9uKSB7CiAgICByZXR1cm4gZmllbGQgLT4gewogICAgICBzd2l0Y2ggKGZpZWxkKSB7CiAgICAgICAgY2FzZSBlbGVtZW50OiByZXR1cm4gZWxlbWVudDsKICAgICAgICBjYXNlIG5leHQ6IHJldHVybiBuZXh0OwogICAgICAgIGNhc2UgaW1wbGVtZW50YXRpb246IHJldHVybiBpbXBsZW1lbnRhdGlvbjsKICAgICAgICBkZWZhdWx0OiByZXR1cm4gRnVuY3Rpb25hbEZpZWxkLnRocm93T25VbmRlZmluZWRGaWVsZChmaWVsZCk7CiAgICAgIH0KICAgIH07CiAgfQp9CgppbnRlcmZhY2UgQ29uczxFTEVNRU5UPiB7CiAgcHVibGljIEVMRU1FTlQgZWxlbWVudCgpOwogIHB1YmxpYyBDZWxsPEVMRU1FTlQ+IG5leHQoKTsKICBwdWJsaWMgSW1wbGVtZW50YXRpb248RUxFTUVOVD4gaW1wbGVtZW50YXRpb24oKTsKCiAgQEZ1bmN0aW9uYWxJbnRlcmZhY2UKICBwdWJsaWMgaW50ZXJmYWNlIEltcGxlbWVudGF0aW9uPEVMRU1FTlQ+IHsKICAgIHB1YmxpYyA8VkFMVUU+IFZBTFVFIHNlbGVjdChFTEVNRU5UIGVsZW1lbnQsIENlbGw8RUxFTUVOVD4gbmV4dCwgQmlGdW5jdGlvbjw/IHN1cGVyIEVMRU1FTlQsIENlbGw8RUxFTUVOVD4sID8gZXh0ZW5kcyBWQUxVRT4gY29ucywgU3VwcGxpZXI8PyBleHRlbmRzIFZBTFVFPiBuaWwpOwogIH0KCiAgcHVibGljIGRlZmF1bHQgPFZBTFVFPiBWQUxVRSBjb25zKEJpRnVuY3Rpb248PyBzdXBlciBFTEVNRU5ULCBDZWxsPEVMRU1FTlQ+LCA/IGV4dGVuZHMgVkFMVUU+IGNvbnMsIFN1cHBsaWVyPD8gZXh0ZW5kcyBWQUxVRT4gbmlsKSB7CiAgICByZXR1cm4gaW1wbGVtZW50YXRpb24oKS5zZWxlY3QoZWxlbWVudCgpLCBuZXh0KCksIGNvbnMsIG5pbCk7CiAgfQoKICBwdWJsaWMgc3RhdGljIDxFTEVNRU5UPiBDb25zPEVMRU1FTlQ+IG5ld18oRUxFTUVOVCBlbGVtZW50LCBDZWxsPEVMRU1FTlQ+IG5leHQsIEltcGxlbWVudGF0aW9uPEVMRU1FTlQ+IGltcGxlbWVudGF0aW9uKSB7CiAgICByZXR1cm4gJENvbnMubmV3XyhlbGVtZW50LCBuZXh0LCBpbXBsZW1lbnRhdGlvbik7CiAgfQp9CgpARnVuY3Rpb25hbEludGVyZmFjZQppbnRlcmZhY2UgQ2VsbDxFTEVNRU5UPiB7CiAgcHVibGljIDxWQUxVRT4gVkFMVUUgc2VsZWN0KEJpRnVuY3Rpb248PyBzdXBlciBFTEVNRU5ULCBDZWxsPEVMRU1FTlQ+LCA/IGV4dGVuZHMgVkFMVUU+IGNvbnMsIFN1cHBsaWVyPD8gZXh0ZW5kcyBWQUxVRT4gbmlsKTsKCiAgcHVibGljIGRlZmF1bHQgaW50IHNpemUoKSB7CiAgICByZXR1cm4gc2VsZWN0KAogICAgICAoZWxlbWVudCwgbmV4dCkgLT4gMSArIG5leHQuc2l6ZSgpLAogICAgICAoKSAtPiAwCiAgICApOwogIH0KCiAgcHVibGljIGRlZmF1bHQgQ2VsbDxFTEVNRU5UPiBmaXJzdChpbnQgc2l6ZSkgewogICAgcmV0dXJuIE9wdGlvbmFsLm9mKHNpemUpCiAgICAgIC48Q2VsbDxFTEVNRU5UPj5tYXAocyAtPiBzZWxlY3QoCiAgICAgICAgKGVsZW1lbnQsIG5leHQpIC0+IHMgPT0gMAogICAgICAgICAgPyBuaWwoKQogICAgICAgICAgOiBjb25zKGVsZW1lbnQsIG5leHQuZmlyc3QocyAtIDEpKQogICAgICAgICwKICAgICAgICBDZWxsOjpuaWwKICAgICAgKSkKICAgICAgLm9yRWxzZVRocm93KElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbjo6bmV3KQogICAgOwogIH0KCiAgcHVibGljIGRlZmF1bHQgPEVMRU1FTlQyPiBDZWxsPEVMRU1FTlQyPiBtYXAoRnVuY3Rpb248PyBzdXBlciBFTEVNRU5ULCA/IGV4dGVuZHMgRUxFTUVOVDI+IG1hcHBlcikgewogICAgcmV0dXJuIHNlbGVjdCgKICAgICAgKGVsZW1lbnQsIG5leHQpIC0+IENlbGwuY29ucyhtYXBwZXIuYXBwbHkoZWxlbWVudCksIG5leHQubWFwKG1hcHBlcikpLAogICAgICBDZWxsOjpuaWwKICAgICk7CiAgfQoKICBwdWJsaWMgZGVmYXVsdCA8RUxFTUVOVDI+IENlbGw8RUxFTUVOVDI+IGZsYXRNYXAoRnVuY3Rpb248PyBzdXBlciBFTEVNRU5ULCBDZWxsPEVMRU1FTlQyPj4gbWFwcGVyKSB7CiAgICByZXR1cm4gc2VsZWN0KAogICAgICAoZWxlbWVudCwgbmV4dCkgLT4gbWFwcGVyCiAgICAgICAgLmFwcGx5KGVsZW1lbnQpCiAgICAgICAgLnNlbGVjdCgKICAgICAgICAgIENlbGw6OmNvbnMsCiAgICAgICAgICAoKSAtPiBuZXh0LmZsYXRNYXAobWFwcGVyKQogICAgICAgICkKICAgICAgLAogICAgICBDZWxsOjpuaWwKICAgICk7CiAgfQoKICBwdWJsaWMgc3RhdGljIDxFTEVNRU5ULCBWQUxVRT4gVkFMVUUgbmlsKEJpRnVuY3Rpb248PyBzdXBlciBFTEVNRU5ULCBDZWxsPEVMRU1FTlQ+LCA/IGV4dGVuZHMgVkFMVUU+IGNvbnMsIFN1cHBsaWVyPD8gZXh0ZW5kcyBWQUxVRT4gbmlsKSB7CiAgICByZXR1cm4gbmlsLmdldCgpOwogIH0KCiAgcHVibGljIHN0YXRpYyA8RUxFTUVOVCwgVkFMVUU+IFZBTFVFIGNvbnMoRUxFTUVOVCBlbGVtZW50LCBDZWxsPEVMRU1FTlQ+IG5leHQsIEJpRnVuY3Rpb248PyBzdXBlciBFTEVNRU5ULCBDZWxsPEVMRU1FTlQ+LCA/IGV4dGVuZHMgVkFMVUU+IGNvbnMsIFN1cHBsaWVyPD8gZXh0ZW5kcyBWQUxVRT4gbmlsKSB7CiAgICByZXR1cm4gY29ucy5hcHBseShlbGVtZW50LCBuZXh0KTsKICB9CgogIHB1YmxpYyBzdGF0aWMgPEVMRU1FTlQ+IENlbGw8RUxFTUVOVD4gbmlsKCkgewogICAgcmV0dXJuIENlbGw6Om5pbDsKICB9CgogIHB1YmxpYyBzdGF0aWMgPEVMRU1FTlQ+IENlbGw8RUxFTUVOVD4gY29ucyhFTEVNRU5UIGVsZW1lbnQsIENlbGw8RUxFTUVOVD4gbmV4dCkgewogICAgU3RyZWFtLm9mKAogICAgICBlbGVtZW50LAogICAgICBuZXh0CiAgICApCiAgICAgIC5mb3JFYWNoKE9iamVjdHM6OnJlcXVpcmVOb25OdWxsKQogICAgOwogICAgcmV0dXJuIENvbnMubmV3XygKICAgICAgZWxlbWVudCwKICAgICAgbmV4dCwKICAgICAgQ2VsbDo6Y29ucwogICAgKTo6Y29uczsKICB9CgogIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZy4uLiBhcmd1bWVudHMpIHsKICAgIENlbGw8SW50ZWdlcj4gY2VsbCA9CiAgICAgIGNvbnMoMSwgY29ucygyLCBjb25zKDMsIG5pbCgpKSkpCiAgICA7CiAgICBTeXN0ZW0ub3V0LnByaW50bG4obmlsKCkgPT0gbmlsKCkpOyAgLy8gdHJ1ZQogICAgU3lzdGVtLm91dC5wcmludGxuKGNlbGwuc2l6ZSgpID09IDMpOyAgLy8gdHJ1ZQogICAgU3lzdGVtLm91dC5wcmludGxuKGNlbGwuZmlyc3QoMikuc2l6ZSgpID09IDIpOyAgLy8gdHJ1ZQogIH0KfQoKcHVibGljIGludGVyZmFjZSBNYWluIHsKICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmcuLi4gYXJndW1lbnRzKSB7CiAgICBDZWxsLm1haW4oYXJndW1lbnRzKTsKICB9Cn0=
Main.java:13: error: illegal start of type
public default <VALUE> VALUE field(FIELD field) {
^
Main.java:13: error: = expected
public default <VALUE> VALUE field(FIELD field) {
^
Main.java:13: error: ';' expected
public default <VALUE> VALUE field(FIELD field) {
^
Main.java:13: error: illegal start of type
public default <VALUE> VALUE field(FIELD field) {
^
Main.java:13: error: = expected
public default <VALUE> VALUE field(FIELD field) {
^
Main.java:13: error: illegal start of type
public default <VALUE> VALUE field(FIELD field) {
^
Main.java:13: error: = expected
public default <VALUE> VALUE field(FIELD field) {
^
Main.java:13: error: illegal start of type
public default <VALUE> VALUE field(FIELD field) {
^
Main.java:13: error: <identifier> expected
public default <VALUE> VALUE field(FIELD field) {
^
Main.java:14: error: = expected
return (VALUE) untypedField(field);
^
Main.java:14: error: ';' expected
return (VALUE) untypedField(field);
^
Main.java:14: error: <identifier> expected
return (VALUE) untypedField(field);
^
Main.java:14: error: ';' expected
return (VALUE) untypedField(field);
^
Main.java:14: error: illegal start of type
return (VALUE) untypedField(field);
^
Main.java:14: error: = expected
return (VALUE) untypedField(field);
^
Main.java:17: error: class, interface, or enum expected
public static <FIELD extends Enum<FIELD>> Object throwOnUndefinedField(FIELD field) throws Error {
^
Main.java:19: error: class, interface, or enum expected
}
^
Main.java:31: error: illegal start of type
public default ELEMENT element() {
^
Main.java:31: error: = expected
public default ELEMENT element() {
^
Main.java:31: error: ';' expected
public default ELEMENT element() {
^
Main.java:31: error: illegal start of type
public default ELEMENT element() {
^
Main.java:31: error: <identifier> expected
public default ELEMENT element() {
^
Main.java:31: error: = expected
public default ELEMENT element() {
^
Main.java:31: error: ';' expected
public default ELEMENT element() {
^
Main.java:32: error: <identifier> expected
return field(Field.element);
^
Main.java:32: error: <identifier> expected
return field(Field.element);
^
Main.java:35: error: class, interface, or enum expected
public default Cell<ELEMENT> next() {
^
Main.java:37: error: class, interface, or enum expected
}
^
Main.java:39: error: class, interface, or enum expected
public default Implementation<ELEMENT> implementation() {
^
Main.java:41: error: class, interface, or enum expected
}
^
Main.java:43: error: class, interface, or enum expected
public static <ELEMENT> $Cons<ELEMENT> new_(ELEMENT element, Cell<ELEMENT> next, Implementation<ELEMENT> implementation) {
^
Main.java:47: error: class, interface, or enum expected
case next: return next;
^
Main.java:48: error: class, interface, or enum expected
case implementation: return implementation;
^
Main.java:49: error: class, interface, or enum expected
default: return FunctionalField.throwOnUndefinedField(field);
^
Main.java:50: error: class, interface, or enum expected
}
^
Main.java:52: error: class, interface, or enum expected
}
^
Main.java:65: error: illegal start of type
public default <VALUE> VALUE cons(BiFunction<? super ELEMENT, Cell<ELEMENT>, ? extends VALUE> cons, Supplier<? extends VALUE> nil) {
^
Main.java:65: error: = expected
public default <VALUE> VALUE cons(BiFunction<? super ELEMENT, Cell<ELEMENT>, ? extends VALUE> cons, Supplier<? extends VALUE> nil) {
^
Main.java:65: error: ';' expected
public default <VALUE> VALUE cons(BiFunction<? super ELEMENT, Cell<ELEMENT>, ? extends VALUE> cons, Supplier<? extends VALUE> nil) {
^
Main.java:65: error: illegal start of type
public default <VALUE> VALUE cons(BiFunction<? super ELEMENT, Cell<ELEMENT>, ? extends VALUE> cons, Supplier<? extends VALUE> nil) {
^
Main.java:65: error: = expected
public default <VALUE> VALUE cons(BiFunction<? super ELEMENT, Cell<ELEMENT>, ? extends VALUE> cons, Supplier<? extends VALUE> nil) {
^
Main.java:65: error: illegal start of type
public default <VALUE> VALUE cons(BiFunction<? super ELEMENT, Cell<ELEMENT>, ? extends VALUE> cons, Supplier<? extends VALUE> nil) {
^
Main.java:65: error: = expected
public default <VALUE> VALUE cons(BiFunction<? super ELEMENT, Cell<ELEMENT>, ? extends VALUE> cons, Supplier<? extends VALUE> nil) {
^
Main.java:65: error: illegal start of type
public default <VALUE> VALUE cons(BiFunction<? super ELEMENT, Cell<ELEMENT>, ? extends VALUE> cons, Supplier<? extends VALUE> nil) {
^
Main.java:65: error: <identifier> expected
public default <VALUE> VALUE cons(BiFunction<? super ELEMENT, Cell<ELEMENT>, ? extends VALUE> cons, Supplier<? extends VALUE> nil) {
^
Main.java:65: error: = expected
public default <VALUE> VALUE cons(BiFunction<? super ELEMENT, Cell<ELEMENT>, ? extends VALUE> cons, Supplier<? extends VALUE> nil) {
^
Main.java:65: error: = expected
public default <VALUE> VALUE cons(BiFunction<? super ELEMENT, Cell<ELEMENT>, ? extends VALUE> cons, Supplier<? extends VALUE> nil) {
^
Main.java:65: error: <identifier> expected
public default <VALUE> VALUE cons(BiFunction<? super ELEMENT, Cell<ELEMENT>, ? extends VALUE> cons, Supplier<? extends VALUE> nil) {
^
Main.java:65: error: <identifier> expected
public default <VALUE> VALUE cons(BiFunction<? super ELEMENT, Cell<ELEMENT>, ? extends VALUE> cons, Supplier<? extends VALUE> nil) {
^
Main.java:65: error: = expected
public default <VALUE> VALUE cons(BiFunction<? super ELEMENT, Cell<ELEMENT>, ? extends VALUE> cons, Supplier<? extends VALUE> nil) {
^
Main.java:65: error: ';' expected
public default <VALUE> VALUE cons(BiFunction<? super ELEMENT, Cell<ELEMENT>, ? extends VALUE> cons, Supplier<? extends VALUE> nil) {
^
Main.java:65: error: <identifier> expected
public default <VALUE> VALUE cons(BiFunction<? super ELEMENT, Cell<ELEMENT>, ? extends VALUE> cons, Supplier<? extends VALUE> nil) {
^
Main.java:65: error: ';' expected
public default <VALUE> VALUE cons(BiFunction<? super ELEMENT, Cell<ELEMENT>, ? extends VALUE> cons, Supplier<? extends VALUE> nil) {
^
Main.java:65: error: illegal start of type
public default <VALUE> VALUE cons(BiFunction<? super ELEMENT, Cell<ELEMENT>, ? extends VALUE> cons, Supplier<? extends VALUE> nil) {
^
Main.java:65: error: = expected
public default <VALUE> VALUE cons(BiFunction<? super ELEMENT, Cell<ELEMENT>, ? extends VALUE> cons, Supplier<? extends VALUE> nil) {
^
Main.java:65: error: illegal start of type
public default <VALUE> VALUE cons(BiFunction<? super ELEMENT, Cell<ELEMENT>, ? extends VALUE> cons, Supplier<? extends VALUE> nil) {
^
Main.java:65: error: <identifier> expected
public default <VALUE> VALUE cons(BiFunction<? super ELEMENT, Cell<ELEMENT>, ? extends VALUE> cons, Supplier<? extends VALUE> nil) {
^
Main.java:65: error: = expected
public default <VALUE> VALUE cons(BiFunction<? super ELEMENT, Cell<ELEMENT>, ? extends VALUE> cons, Supplier<? extends VALUE> nil) {
^
Main.java:65: error: ';' expected
public default <VALUE> VALUE cons(BiFunction<? super ELEMENT, Cell<ELEMENT>, ? extends VALUE> cons, Supplier<? extends VALUE> nil) {
^
Main.java:65: error: <identifier> expected
public default <VALUE> VALUE cons(BiFunction<? super ELEMENT, Cell<ELEMENT>, ? extends VALUE> cons, Supplier<? extends VALUE> nil) {
^
Main.java:65: error: ';' expected
public default <VALUE> VALUE cons(BiFunction<? super ELEMENT, Cell<ELEMENT>, ? extends VALUE> cons, Supplier<? extends VALUE> nil) {
^
Main.java:66: error: illegal start of type
return implementation().select(element(), next(), cons, nil);
^
Main.java:66: error: ';' expected
return implementation().select(element(), next(), cons, nil);
^
Main.java:69: error: class, interface, or enum expected
public static <ELEMENT> Cons<ELEMENT> new_(ELEMENT element, Cell<ELEMENT> next, Implementation<ELEMENT> implementation) {
^
Main.java:71: error: class, interface, or enum expected
}
^
Main.java:78: error: illegal start of type
public default int size() {
^
Main.java:78: error: = expected
public default int size() {
^
Main.java:78: error: ';' expected
public default int size() {
^
Main.java:78: error: illegal start of type
public default int size() {
^
Main.java:78: error: <identifier> expected
public default int size() {
^
Main.java:78: error: = expected
public default int size() {
^
Main.java:78: error: ';' expected
public default int size() {
^
Main.java:79: error: <identifier> expected
return select(
^
Main.java:80: error: illegal start of type
(element, next) -> 1 + next.size(),
^
Main.java:80: error: ')' expected
(element, next) -> 1 + next.size(),
^
Main.java:80: error: ';' expected
(element, next) -> 1 + next.size(),
^
Main.java:80: error: <identifier> expected
(element, next) -> 1 + next.size(),
^
Main.java:80: error: ';' expected
(element, next) -> 1 + next.size(),
^
Main.java:80: error: illegal start of type
(element, next) -> 1 + next.size(),
^
Main.java:80: error: <identifier> expected
(element, next) -> 1 + next.size(),
^
Main.java:80: error: = expected
(element, next) -> 1 + next.size(),
^
Main.java:80: error: ';' expected
(element, next) -> 1 + next.size(),
^
Main.java:80: error: illegal start of type
(element, next) -> 1 + next.size(),
^
Main.java:80: error: ';' expected
(element, next) -> 1 + next.size(),
^
Main.java:85: error: class, interface, or enum expected
public default Cell<ELEMENT> first(int size) {
^
Main.java:96: error: class, interface, or enum expected
}
^
Main.java:98: error: class, interface, or enum expected
public default <ELEMENT2> Cell<ELEMENT2> map(Function<? super ELEMENT, ? extends ELEMENT2> mapper) {
^
Main.java:103: error: class, interface, or enum expected
}
^
Main.java:105: error: class, interface, or enum expected
public default <ELEMENT2> Cell<ELEMENT2> flatMap(Function<? super ELEMENT, Cell<ELEMENT2>> mapper) {
^
Main.java:116: error: class, interface, or enum expected
}
^
Main.java:118: error: class, interface, or enum expected
public static <ELEMENT, VALUE> VALUE nil(BiFunction<? super ELEMENT, Cell<ELEMENT>, ? extends VALUE> cons, Supplier<? extends VALUE> nil) {
^
Main.java:120: error: class, interface, or enum expected
}
^
Main.java:122: error: class, interface, or enum expected
public static <ELEMENT, VALUE> VALUE cons(ELEMENT element, Cell<ELEMENT> next, BiFunction<? super ELEMENT, Cell<ELEMENT>, ? extends VALUE> cons, Supplier<? extends VALUE> nil) {
^
Main.java:124: error: class, interface, or enum expected
}
^
Main.java:126: error: class, interface, or enum expected
public static <ELEMENT> Cell<ELEMENT> nil() {
^
Main.java:128: error: class, interface, or enum expected
}
^
Main.java:130: error: class, interface, or enum expected
public static <ELEMENT> Cell<ELEMENT> cons(ELEMENT element, Cell<ELEMENT> next) {
^
Main.java:137: error: class, interface, or enum expected
return Cons.new_(
^
Main.java:142: error: class, interface, or enum expected
}
^
Main.java:144: error: class, interface, or enum expected
public static void main(String... arguments) {
^
100 errors