package com.acme.sets; import church.lang.ByteStream; import church.lang.Collections.$Size; import church.lang.Hash.$HashCode; import church.lang.operators.Relational.$$equal; import church.lang.operators.Streams.$$encode; import church.primitives.Integers; import church.primitives.Objects; import church.util.HashSet; import church.util.HashSet.$Set; import static church.lang.operators.Streams.output; import static church.util.HashSet.contains; @SuppressWarnings("unchecked") public class SetExample { private static final $$equal<Integer> $S0 = Integers::$equal; private static final $HashCode<Integer> $S1 = Integers::hashCode; private static final $Set<Integer> $S2 = HashSet.set($S0, $S1); private static final $$encode<ByteStream, String> $S3 = Objects::$encode; private static final $$encode<ByteStream, Integer> $S4 = Integers::$encode; private static final $$encode<ByteStream, HashSet<Integer>> $S5 = HashSet.$encode($S4); private static final $Size<HashSet<Integer>> $S6 = HashSet::size; private static final $$equal<String> $S7 = Objects::$equal; private static final $HashCode<String> $S8 = Objects::hashCode; private static final $Set<String> $S9 = HashSet.set($S7, $S8); private static final $Size<HashSet<String>> $S10 = HashSet::size; private static final $$encode<ByteStream, HashSet<String>> $S11 = HashSet.$encode($S3); public static void main(String[] args) { HashSet<Integer> a = $S2.set(1, 2, 3, 2, 1); $S3.$encode($S5.$encode(output, a), "\n"); assert $S6.size(a) == 3; assert contains(a, 1); HashSet<String> b = $S9.set("foo", "bar", "baz", "basil", "basel"); assert $S10.size(b) == 5; $S3.$encode($S11.$encode(output, b), "\n"); } }