[package] [Java implementation] [Execution output]


Array


import java.util.stream.IntStream;

import church.lang.ArraySupport;
import church.lang.Hash;
import church.lang.Interval;
import church.lang.JavaClasses;

import church.lang.operators.Arithmetic;
import church.lang.operators.Relational;
import church.lang.operators.Streams;

/*
abstract <T> T[]: arrayLit(T...: elements);

//array(elements) = array0(elements);

int[]: arrayLit(int...: elements) = elements;

float[]: arrayLit(float...: elements) = elements;
*/

array(elements) = array0(elements);

createArray(length, generator) = createArray0(java_class, length, generator);

a.length = length0(a);

a.size = length0(a);

a[i] = get0(a, i);

// (a + b) = append0(a, b);

(a == b) = equal0(==, a, b);

a.hashCode() = hashCode0(hashCode, a);

writeElementsToStream(stream0, a) = {
    N       = a.length;
    stream1 = if N == 0 then stream0 else stream0 << a[0];
    Interval.new(1, N).reduce(stream1, s −> i −> s << ", " << a[i]);
}

writeEmbracedElementsToStream(stream0, a, openString, closeString) = {
    stream1 = stream0 << openString;
    stream2 = writeElementsToStream(stream1, a);
    stream2 << closeString;
}

stream0 << a = writeEmbracedElementsToStream(stream0, a, "[", "]");