ArrayGeneration.java
package com.acme.arrays;

import church.lang.Array;
import church.lang.Array.$CreateArray;
import church.lang.Array.$WriteElementsToStream;
import church.lang.Array.$WriteEmbracedElementsToStream;
import church.lang.ByteStream;
import church.lang.JavaClasses.$Java_class;
import church.lang.operators.Streams.$$encode;
import church.primitives.Integers;
import church.primitives.Objects;

import static church.lang.operators.Streams.output;

@SuppressWarnings("unchecked")
public class ArrayGeneration {
    private static final $Java_class<Integer>                                                $S0 = () -> Integer.class;
    private static final $CreateArray<Integer>                                               $S1 = Array.createArray($S0);
    private static final $$encode<ByteStream, String>                                        $S2 = Objects::$encode;
    private static final $$encode<ByteStream, Integer>                                       $S3 = Integers::$encode;
    private static final $WriteElementsToStream<ByteStream, Integer>                         $S4 = Array.writeElementsToStream($S3, $S2);
    private static final $WriteEmbracedElementsToStream<ByteStream, Integer, String, String> $S5 = Array.writeEmbracedElementsToStream($S2, $S4, $S2);
    private static final $$encode<ByteStream, Integer[]>                                     $S6 = Array.$encode($S5);

    public static void main(String[] args) {
        Integer[] a = $S1.createArray(5, i -> (i * 2));
        $S2.$encode($S6.$encode(output, a), "\n");
    }

}