ArrayStreams3.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.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 ArrayStreams3 {
    private static final $$encode<ByteStream, String>                                       $S0 = Objects::$encode;
    private static final $$encode<ByteStream, Object>                                       $S1 = Objects::$encode;
    private static final $WriteElementsToStream<ByteStream, Object>                         $S2 = Array.writeElementsToStream($S1, $S0);
    private static final $WriteEmbracedElementsToStream<ByteStream, Object, String, String> $S3 = Array.writeEmbracedElementsToStream($S0, $S2, $S0);
    private static final $$encode<ByteStream, Object[]>                                     $S4 = Array.$encode($S3);

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

}