ArrayStreams2.java
package com.acme.javaInterop;

import church.lang.Array;
import church.lang.Array.$WriteElementsToStream;
import church.lang.Array.$WriteEmbracedElementsToStream;
import church.lang.ByteStream;
import church.lang.operators.Relational.$$equal;
import church.lang.operators.Streams.$$encode;
import church.primitives.Objects;

import static church.lang.Array.array;
import static church.lang.System.stream;
import static church.lang.operators.Streams.output;

@SuppressWarnings("unchecked")
public class ArrayStreams2 {
    private static final $$equal<String>                                                    $S0 = Objects::$equal;
    private static final $$encode<ByteStream, String>                                       $S1 = Objects::$encode;
    private static final $$encode<ByteStream, Object>                                       $S2 = Objects::$encode;
    private static final $WriteElementsToStream<ByteStream, Object>                         $S3 = Array.writeElementsToStream($S2, $S1);
    private static final $WriteEmbracedElementsToStream<ByteStream, Object, String, String> $S4 = Array.writeEmbracedElementsToStream($S1, $S3, $S1);
    private static final $$encode<ByteStream, Object[]>                                     $S5 = Array.$encode($S4);

    public static void main(String[] args) {
        Object[] s = stream(array("Apple", "Pear")).map(e -> $S0.$equal(e, "Apple")).toArray();
        $S1.$encode($S5.$encode(output, s), "\n");
    }

}