package fj.data; import fj.*; import static fj.P.p; import static fj.data.Option.some; import java.util.Arrays; import java.util.Collection; import java.util.ArrayList; import java.util.BitSet; import java.util.EnumSet; import java.util.HashSet; import java.util.LinkedHashSet; import java.util.LinkedList; import java.util.PriorityQueue; import java.util.Stack; import java.util.TreeSet; import java.util.Vector; import java.util.Iterator; import java.util.NoSuchElementException; import static java.util.EnumSet.copyOf; import java.util.concurrent.ArrayBlockingQueue; import java.util.concurrent.Callable; import java.util.concurrent.ConcurrentLinkedQueue; import java.util.concurrent.CopyOnWriteArrayList; import java.util.concurrent.CopyOnWriteArraySet; import java.util.concurrent.DelayQueue; import java.util.concurrent.Delayed; import java.util.concurrent.Future; import java.util.concurrent.LinkedBlockingQueue; import java.util.concurrent.PriorityBlockingQueue; import java.util.concurrent.SynchronousQueue; /** * Functions that convert between types from the core Java API. * * @version %build.number% */ public final class Java { private Java() { throw new UnsupportedOperationException(); } // BEGIN List -> /** * A function that converts lists to array lists. * * @return A function that converts lists to array lists. */ public static <A> F<List<A>, ArrayList<A>> List_ArrayList() { return as -> new ArrayList<>(as.toCollection()); } /** * A function that converts lists to bit sets. */ public static final F<List<Boolean>, BitSet> List_BitSet = bs -> { final BitSet s = new BitSet(bs.length()); bs.zipIndex().foreachDoEffect(bi -> s.set(bi._2(), bi._1())); return s; }; /** * A function that converts lists to array enum sets. * * @return A function that converts lists to enum sets. */ public static <A extends Enum<A>> F<List<A>, EnumSet<A>> List_EnumSet() { return as -> copyOf(as.toCollection()); } /** * A function that converts lists to hash sets. * * @return A function that converts lists to hash sets. */ public static <A> F<List<A>, HashSet<A>> List_HashSet() { return as -> new HashSet<>(as.toCollection()); } /** * A function that converts lists to linked hash sets. * * @return A function that converts lists to linked hash sets. */ public static <A> F<List<A>, LinkedHashSet<A>> List_LinkedHashSet() { return as -> new LinkedHashSet<>(as.toCollection()); } /** * A function that converts lists to linked lists. * * @return A function that converts lists to linked lists. */ public static <A> F<List<A>, LinkedList<A>> List_LinkedList() { return as -> new LinkedList<>(as.toCollection()); } /** * A function that converts lists to priority queues. * * @return A function that converts lists to priority queues. */ public static <A> F<List<A>, PriorityQueue<A>> List_PriorityQueue() { return as -> new PriorityQueue<>(as.toCollection()); } /** * A function that converts lists to stacks. * * @return A function that converts lists to stacks. */ public static <A> F<List<A>, Stack<A>> List_Stack() { return as -> { final Stack<A> s = new Stack<>(); s.addAll(as.toCollection()); return s; }; } /** * A function that converts lists to stacks. * * @return A function that converts lists to stacks. */ public static <A> F<List<A>, TreeSet<A>> List_TreeSet() { return as -> new TreeSet<>(as.toCollection()); } /** * A function that converts lists to vectors. * * @return A function that converts lists to vectors. */ public static <A> F<List<A>, Vector<A>> List_Vector() { return as -> new Vector<>(as.toCollection()); } /** * A function that converts lists to array blocking queue. * * @param fair The argument to pass to the constructor of the array blocking queue. * @return A function that converts lists to array blocking queue. */ public static <A> F<List<A>, ArrayBlockingQueue<A>> List_ArrayBlockingQueue(final boolean fair) { return as -> new ArrayBlockingQueue<>(as.length(), fair, as.toCollection()); } /** * A function that converts lists to concurrent linked queues. * * @return A function that converts lists to concurrent linked queues. */ public static <A> F<List<A>, ConcurrentLinkedQueue<A>> List_ConcurrentLinkedQueue() { return as -> new ConcurrentLinkedQueue<>(as.toCollection()); } /** * A function that converts lists to copy on write array lists. * * @return A function that converts lists to copy on write array lists. */ public static <A> F<List<A>, CopyOnWriteArrayList<A>> List_CopyOnWriteArrayList() { return as -> new CopyOnWriteArrayList<>(as.toCollection()); } /** * A function that converts lists to copy on write array sets. * * @return A function that converts lists to copy on write array sets. */ public static <A> F<List<A>, CopyOnWriteArraySet<A>> List_CopyOnWriteArraySet() { return as -> new CopyOnWriteArraySet<>(as.toCollection()); } /** * A function that converts lists to delay queues. * * @return A function that converts lists to delay queues. */ public static <A extends Delayed> F<List<A>, DelayQueue<A>> List_DelayQueue() { return as -> new DelayQueue<>(as.toCollection()); } /** * A function that converts lists to linked blocking queues. * * @return A function that converts lists to linked blocking queues. */ public static <A> F<List<A>, LinkedBlockingQueue<A>> List_LinkedBlockingQueue() { return as -> new LinkedBlockingQueue<>(as.toCollection()); } /** * A function that converts lists to priority blocking queues. * * @return A function that converts lists to priority blocking queues. */ public static <A> F<List<A>, PriorityBlockingQueue<A>> List_PriorityBlockingQueue() { return as -> new PriorityBlockingQueue<>(as.toCollection()); } /** * A function that converts lists to synchronous queues. * * @param fair The argument to pass to the constructor of the synchronous queue. * @return A function that converts lists to synchronous queues. */ public static <A> F<List<A>, SynchronousQueue<A>> List_SynchronousQueue(final boolean fair) { return as -> { final SynchronousQueue<A> q = new SynchronousQueue<>(fair); q.addAll(as.toCollection()); return q; }; } // END List -> // BEGIN Array -> /** * A function that converts arrays to array lists. * * @return A function that converts arrays to array lists. */ public static <A> F<Array<A>, ArrayList<A>> Array_ArrayList() { return Array::toJavaList; } /** * A function that converts arrays to bit sets. */ public static final F<Array<Boolean>, BitSet> Array_BitSet = bs -> { final BitSet s = new BitSet(bs.length()); bs.zipIndex().foreachDoEffect(bi -> s.set(bi._2(), bi._1())); return s; }; /** * A function that converts arrays to enum sets. * * @return A function that converts arrays to enum sets. */ public static <A extends Enum<A>> F<Array<A>, EnumSet<A>> Array_EnumSet() { return as -> copyOf(as.asJavaList()); } /** * A function that converts arrays to hash sets. * * @return A function that converts arrays to hash sets. */ public static <A> F<Array<A>, HashSet<A>> Array_HashSet() { return as -> new HashSet<>(as.asJavaList()); } /** * A function that converts arrays to linked hash sets. * * @return A function that converts arrays to linked hash sets. */ public static <A> F<Array<A>, LinkedHashSet<A>> Array_LinkedHashSet() { return as -> new LinkedHashSet<>(as.asJavaList()); } /** * A function that converts arrays to linked lists. * * @return A function that converts arrays to linked lists. */ public static <A> F<Array<A>, LinkedList<A>> Array_LinkedList() { return as -> new LinkedList<>(as.asJavaList()); } /** * A function that converts arrays to priority queues. * * @return A function that converts arrays to priority queues. */ public static <A> F<Array<A>, PriorityQueue<A>> Array_PriorityQueue() { return as -> new PriorityQueue<>(as.asJavaList()); } /** * A function that converts arrays to stacks. * * @return A function that converts arrays to stacks. */ public static <A> F<Array<A>, Stack<A>> Array_Stack() { return as -> { final Stack<A> s = new Stack<>(); s.addAll(as.asJavaList()); return s; }; } /** * A function that converts arrays to tree sets. * * @return A function that converts arrays to tree sets. */ public static <A> F<Array<A>, TreeSet<A>> Array_TreeSet() { return as -> new TreeSet<>(as.asJavaList()); } /** * A function that converts arrays to vectors. * * @return A function that converts arrays to vectors. */ public static <A> F<Array<A>, Vector<A>> Array_Vector() { return as -> new Vector<>(as.asJavaList()); } /** * A function that converts arrays to array blocking queues. * * @param fair The argument to pass to the constructor of the array blocking queue. * @return A function that converts arrays to array blocking queues. */ public static <A> F<Array<A>, ArrayBlockingQueue<A>> Array_ArrayBlockingQueue(final boolean fair) { return as -> new ArrayBlockingQueue<>(as.length(), fair, as.asJavaList()); } /** * A function that converts arrays to concurrent linked queues. * * @return A function that converts arrays to concurrent linked queues. */ public static <A> F<Array<A>, ConcurrentLinkedQueue<A>> Array_ConcurrentLinkedQueue() { return as -> new ConcurrentLinkedQueue<>(as.asJavaList()); } /** * A function that converts arrays to copy on write array lists. * * @return A function that converts arrays to copy on write array lists. */ public static <A> F<Array<A>, CopyOnWriteArrayList<A>> Array_CopyOnWriteArrayList() { return as -> new CopyOnWriteArrayList<>(as.asJavaList()); } /** * A function that converts arrays to copy on write array sets. * * @return A function that converts arrays to copy on write array sets. */ public static <A> F<Array<A>, CopyOnWriteArraySet<A>> Array_CopyOnWriteArraySet() { return as -> new CopyOnWriteArraySet<>(as.asJavaList()); } /** * A function that converts arrays to delay queues. * * @return A function that converts arrays to delay queues. */ public static <A extends Delayed> F<Array<A>, DelayQueue<A>> Array_DelayQueue() { return as -> new DelayQueue<>(as.asJavaList()); } /** * A function that converts arrays to linked blocking queues. * * @return A function that converts arrays to linked blocking queues. */ public static <A> F<Array<A>, LinkedBlockingQueue<A>> Array_LinkedBlockingQueue() { return as -> new LinkedBlockingQueue<>(as.asJavaList()); } /** * A function that converts arrays to priority blocking queues. * * @return A function that converts arrays to priority blocking queues. */ public static <A> F<Array<A>, PriorityBlockingQueue<A>> Array_PriorityBlockingQueue() { return as -> new PriorityBlockingQueue<>(as.asJavaList()); } /** * A function that converts arrays to synchronous queues. * * @param fair The argument to pass to the constructor of the synchronous queue. * @return A function that converts arrays to synchronous queues. */ public static <A> F<Array<A>, SynchronousQueue<A>> Array_SynchronousQueue(final boolean fair) { return as -> { final SynchronousQueue<A> q = new SynchronousQueue<>(fair); q.addAll(as.asJavaList()); return q; }; } // END Array -> // BEGIN Stream -> /** * A function that converts streams to iterable. * * @return A function that converts streams to iterable. */ public static <A> F<Stream<A>, Iterable<A>> Stream_Iterable() { return as -> () -> new Iterator<A>() { private Stream<A> x = as; public boolean hasNext() { return x.isNotEmpty(); } public A next() { if (x.isEmpty()) throw new NoSuchElementException("Empty iterator"); else { final A a = x.head(); x = x.tail()._1(); return a; } } public void remove() { throw new UnsupportedOperationException(); } }; } /** * A function that converts streams to array lists. * * @return A function that converts streams to array lists. */ public static <A> F<Stream<A>, ArrayList<A>> Stream_ArrayList() { return as -> new ArrayList<>(as.toCollection()); } /** * A function that converts streams to bit sets. */ public static final F<Stream<Boolean>, BitSet> Stream_BitSet = bs -> { final BitSet s = new BitSet(bs.length()); bs.zipIndex().foreachDoEffect(bi -> s.set(bi._2(), bi._1())); return s; }; /** * A function that converts streams to enum sets. * * @return A function that converts streams to enum sets. */ public static <A extends Enum<A>> F<Stream<A>, EnumSet<A>> Stream_EnumSet() { return as -> copyOf(as.toCollection()); } /** * A function that converts streams to hash sets. * * @return A function that converts streams to hash sets. */ public static <A> F<Stream<A>, HashSet<A>> Stream_HashSet() { return as -> new HashSet<>(as.toCollection()); } /** * A function that converts streams to linked hash sets. * * @return A function that converts streams to linked hash sets. */ public static <A> F<Stream<A>, LinkedHashSet<A>> Stream_LinkedHashSet() { return as -> new LinkedHashSet<>(as.toCollection()); } /** * A function that converts streams to linked lists. * * @return A function that converts streams to linked lists. */ public static <A> F<Stream<A>, LinkedList<A>> Stream_LinkedList() { return as -> new LinkedList<>(as.toCollection()); } /** * A function that converts streams to priority queues. * * @return A function that converts streams to priority queues. */ public static <A> F<Stream<A>, PriorityQueue<A>> Stream_PriorityQueue() { return as -> new PriorityQueue<>(as.toCollection()); } /** * A function that converts streams to stacks. * * @return A function that converts streams to stacks. */ public static <A> F<Stream<A>, Stack<A>> Stream_Stack() { return as -> { final Stack<A> s = new Stack<>(); s.addAll(as.toCollection()); return s; }; } /** * A function that converts streams to tree sets. * * @return A function that converts streams to tree sets. */ public static <A> F<Stream<A>, TreeSet<A>> Stream_TreeSet() { return as -> new TreeSet<>(as.toCollection()); } /** * A function that converts streams to vectors. * * @return A function that converts streams to vectors. */ public static <A> F<Stream<A>, Vector<A>> Stream_Vector() { return as -> new Vector<>(as.toCollection()); } /** * A function that converts streams to array blocking queues. * * @param fair The argument to pass to the constructor of the array blocking queue. * @return A function that converts streams to array blocking queues. */ public static <A> F<Stream<A>, ArrayBlockingQueue<A>> Stream_ArrayBlockingQueue(final boolean fair) { return as -> new ArrayBlockingQueue<>(as.length(), fair, as.toCollection()); } /** * A function that converts streams to concurrent linked queues. * * @return A function that converts streams to concurrent linked queues. */ public static <A> F<Stream<A>, ConcurrentLinkedQueue<A>> Stream_ConcurrentLinkedQueue() { return as -> new ConcurrentLinkedQueue<>(as.toCollection()); } /** * A function that converts streams to copy on write array lists. * * @return A function that converts streams to copy on write array lists. */ public static <A> F<Stream<A>, CopyOnWriteArrayList<A>> Stream_CopyOnWriteArrayList() { return as -> new CopyOnWriteArrayList<>(as.toCollection()); } /** * A function that converts streams to copy on write array sets. * * @return A function that converts streams to copy on write array sets. */ public static <A> F<Stream<A>, CopyOnWriteArraySet<A>> Stream_CopyOnWriteArraySet() { return as -> new CopyOnWriteArraySet<>(as.toCollection()); } /** * A function that converts streams to delay queues. * * @return A function that converts streams to delay queues. */ public static <A extends Delayed> F<Stream<A>, DelayQueue<A>> Stream_DelayQueue() { return as -> new DelayQueue<>(as.toCollection()); } /** * A function that converts streams to linked blocking queues. * * @return A function that converts streams to linked blocking queues. */ public static <A> F<Stream<A>, LinkedBlockingQueue<A>> Stream_LinkedBlockingQueue() { return as -> new LinkedBlockingQueue<>(as.toCollection()); } /** * A function that converts streams to priority blocking queues. * * @return A function that converts streams to priority blocking queues. */ public static <A> F<Stream<A>, PriorityBlockingQueue<A>> Stream_PriorityBlockingQueue() { return as -> new PriorityBlockingQueue<>(as.toCollection()); } /** * A function that converts streams to synchronous queues. * * @param fair The argument to pass to the constructor of the synchronous queue. * @return A function that converts streams to synchronous queues. */ public static <A> F<Stream<A>, SynchronousQueue<A>> Stream_SynchronousQueue(final boolean fair) { return as -> { final SynchronousQueue<A> q = new SynchronousQueue<>(fair); q.addAll(as.toCollection()); return q; }; } // END Stream -> // BEGIN Option -> /** * A function that converts options to array lists. * * @return A function that converts options to array lists. */ public static <A> F<Option<A>, ArrayList<A>> Option_ArrayList() { return as -> new ArrayList<>(as.toCollection()); } /** * A function that converts options to bit sets. */ public static final F<Option<Boolean>, BitSet> Option_BitSet = bs -> { final BitSet s = new BitSet(bs.length()); bs.foreachDoEffect(b -> { if (b) s.set(0); }); return s; }; /** * A function that converts options to enum sets. * * @return A function that converts options to enum sets. */ public static <A extends Enum<A>> F<Option<A>, EnumSet<A>> Option_EnumSet() { return as -> copyOf(as.toCollection()); } /** * A function that converts options to hash sets. * * @return A function that converts options to hash sets. */ public static <A> F<Option<A>, HashSet<A>> Option_HashSet() { return as -> new HashSet<>(as.toCollection()); } /** * A function that converts options to linked hash sets. * * @return A function that converts options to linked hash sets. */ public static <A> F<Option<A>, LinkedHashSet<A>> Option_LinkedHashSet() { return as -> new LinkedHashSet<>(as.toCollection()); } /** * A function that converts options to linked lists. * * @return A function that converts options to linked lists. */ public static <A> F<Option<A>, LinkedList<A>> Option_LinkedList() { return as -> new LinkedList<>(as.toCollection()); } /** * A function that converts options to priority queues. * * @return A function that converts options to priority queues. */ public static <A> F<Option<A>, PriorityQueue<A>> Option_PriorityQueue() { return as -> new PriorityQueue<>(as.toCollection()); } /** * A function that converts options to stacks. * * @return A function that converts options to stacks. */ public static <A> F<Option<A>, Stack<A>> Option_Stack() { return as -> { final Stack<A> s = new Stack<>(); s.addAll(as.toCollection()); return s; }; } /** * A function that converts options to tree sets. * * @return A function that converts options to tree sets. */ public static <A> F<Option<A>, TreeSet<A>> Option_TreeSet() { return as -> new TreeSet<>(as.toCollection()); } /** * A function that converts options to vectors. * * @return A function that converts options to vectors. */ public static <A> F<Option<A>, Vector<A>> Option_Vector() { return as -> new Vector<>(as.toCollection()); } /** * A function that converts options to array blocking queues. * * @param fair The argument to pass to the constructor of the array blocking queue. * @return A function that converts options to array blocking queues. */ public static <A> F<Option<A>, ArrayBlockingQueue<A>> Option_ArrayBlockingQueue(final boolean fair) { return as -> new ArrayBlockingQueue<>(as.length(), fair, as.toCollection()); } /** * A function that converts options to concurrent linked queues. * * @return A function that converts options to concurrent linked queues. */ public static <A> F<Option<A>, ConcurrentLinkedQueue<A>> Option_ConcurrentLinkedQueue() { return as -> new ConcurrentLinkedQueue<>(as.toCollection()); } /** * A function that converts options to copy on write array lists. * * @return A function that converts options to copy on write array lists. */ public static <A> F<Option<A>, CopyOnWriteArrayList<A>> Option_CopyOnWriteArrayList() { return as -> new CopyOnWriteArrayList<>(as.toCollection()); } /** * A function that converts options to copy on write array sets. * * @return A function that converts options to copy on write array sets. */ public static <A> F<Option<A>, CopyOnWriteArraySet<A>> Option_CopyOnWriteArraySet() { return as -> new CopyOnWriteArraySet<>(as.toCollection()); } /** * A function that converts options to delay queues. * * @return A function that converts options to delay queues. */ public static <A extends Delayed> F<Option<A>, DelayQueue<A>> Option_DelayQueue() { return as -> new DelayQueue<>(as.toCollection()); } /** * A function that converts options to linked blocking queues. * * @return A function that converts options to linked blocking queues. */ public static <A> F<Option<A>, LinkedBlockingQueue<A>> Option_LinkedBlockingQueue() { return as -> new LinkedBlockingQueue<>(as.toCollection()); } /** * A function that converts options to priority blocking queues. * * @return A function that converts options to priority blocking queues. */ public static <A> F<Option<A>, PriorityBlockingQueue<A>> Option_PriorityBlockingQueue() { return as -> new PriorityBlockingQueue<>(as.toCollection()); } /** * A function that converts options to synchronous queues. * * @param fair The argument to pass to the constructor of the synchronous queue. * @return A function that converts options to synchronous queues. */ public static <A> F<Option<A>, SynchronousQueue<A>> Option_SynchronousQueue(final boolean fair) { return as -> { final SynchronousQueue<A> q = new SynchronousQueue<>(fair); q.addAll(as.toCollection()); return q; }; } // END Option -> // BEGIN Either -> /** * A function that converts eithers to array lists. * * @return A function that converts eithers to array lists. */ public static <A, B> F<Either<A, B>, ArrayList<A>> Either_ArrayListA() { return Function.compose(Java.Option_ArrayList(), Conversions.Either_OptionA()); } /** * A function that converts eithers to array lists. * * @return A function that converts eithers to array lists. */ public static <A, B> F<Either<A, B>, ArrayList<B>> Either_ArrayListB() { return Function.compose(Java.Option_ArrayList(), Conversions.Either_OptionB()); } /** * A function that converts eithers to bit sets. * * @return A function that converts eithers to bit sets. */ public static <B> F<Either<Boolean, B>, BitSet> Either_BitSetA() { return Function.compose(Option_BitSet, Conversions.Either_OptionA()); } /** * A function that converts eithers to bit sets. * * @return A function that converts eithers to bit sets. */ public static <A> F<Either<A, Boolean>, BitSet> Either_BitSetB() { return Function.compose(Option_BitSet, Conversions.Either_OptionB()); } /** * A function that converts eithers to enum sets. * * @return A function that converts eithers to enum sets. */ public static <A extends Enum<A>, B> F<Either<A, B>, EnumSet<A>> Either_EnumSetA() { return Function.compose(Java.<A>Option_EnumSet(), Conversions.<A, B>Either_OptionA()); } /** * A function that converts eithers to enum sets. * * @return A function that converts eithers to enum sets. */ public static <A, B extends Enum<B>> F<Either<A, B>, EnumSet<B>> Either_EnumSetB() { return Function.compose(Java.<B>Option_EnumSet(), Conversions.<A, B>Either_OptionB()); } /** * A function that converts eithers to hash sets. * * @return A function that converts eithers to hash sets. */ public static <A, B> F<Either<A, B>, HashSet<A>> Either_HashSetA() { return Function.compose(Java.Option_HashSet(), Conversions.Either_OptionA()); } /** * A function that converts eithers to hash sets. * * @return A function that converts eithers to hash sets. */ public static <A, B> F<Either<A, B>, HashSet<B>> Either_HashSetB() { return Function.compose(Java.Option_HashSet(), Conversions.Either_OptionB()); } /** * A function that converts eithers to linked hash sets. * * @return A function that converts eithers to linked hash sets. */ public static <A, B> F<Either<A, B>, LinkedHashSet<A>> Either_LinkedHashSetA() { return Function.compose(Java.Option_LinkedHashSet(), Conversions.Either_OptionA()); } /** * A function that converts eithers to linked hash sets. * * @return A function that converts eithers to linked hash sets. */ public static <A, B> F<Either<A, B>, LinkedHashSet<B>> Either_LinkedHashSetB() { return Function.compose(Java.Option_LinkedHashSet(), Conversions.Either_OptionB()); } /** * A function that converts eithers to linked lists. * * @return A function that converts eithers to linked lists. */ public static <A, B> F<Either<A, B>, LinkedList<A>> Either_LinkedListA() { return Function.compose(Java.Option_LinkedList(), Conversions.Either_OptionA()); } /** * A function that converts eithers to priority queues. * * @return A function that eithers options to priority queues. */ public static <A, B> F<Either<A, B>, PriorityQueue<A>> Option_PriorityQueueA() { return Function.compose(Java.Option_PriorityQueue(), Conversions.Either_OptionA()); } /** * A function that converts eithers to priority queues. * * @return A function that eithers options to priority queues. */ public static <A, B> F<Either<A, B>, PriorityQueue<B>> Option_PriorityQueueB() { return Function.compose(Java.Option_PriorityQueue(), Conversions.Either_OptionB()); } /** * A function that converts eithers to linked lists. * * @return A function that converts eithers to linked lists. */ public static <A, B> F<Either<A, B>, LinkedList<B>> Either_LinkedListB() { return Function.compose(Java.Option_LinkedList(), Conversions.Either_OptionB()); } /** * A function that converts eithers to stacks. * * @return A function that converts eithers to stacks. */ public static <A, B> F<Either<A, B>, Stack<A>> Either_StackA() { return Function.compose(Java.Option_Stack(), Conversions.Either_OptionA()); } /** * A function that converts eithers to stacks. * * @return A function that converts eithers to stacks. */ public static <A, B> F<Either<A, B>, Stack<B>> Either_StackB() { return Function.compose(Java.Option_Stack(), Conversions.Either_OptionB()); } /** * A function that converts eithers to tree sets. * * @return A function that converts eithers to tree sets. */ public static <A, B> F<Either<A, B>, TreeSet<A>> Either_TreeSetA() { return Function.compose(Java.Option_TreeSet(), Conversions.Either_OptionA()); } /** * A function that converts eithers to tree sets. * * @return A function that converts eithers to tree sets. */ public static <A, B> F<Either<A, B>, TreeSet<B>> Either_TreeSetB() { return Function.compose(Java.Option_TreeSet(), Conversions.Either_OptionB()); } /** * A function that converts eithers to vectors. * * @return A function that converts eithers to vectors. */ public static <A, B> F<Either<A, B>, Vector<A>> Either_VectorA() { return Function.compose(Java.Option_Vector(), Conversions.Either_OptionA()); } /** * A function that converts eithers to vectors. * * @return A function that converts eithers to vectors. */ public static <A, B> F<Either<A, B>, Vector<B>> Either_VectorB() { return Function.compose(Java.Option_Vector(), Conversions.Either_OptionB()); } /** * A function that converts eithers to array blocking queues. * * @param fair The argument to pass to the constructor of the array blocking queue. * @return A function that converts eithers to array blocking queues. */ public static <A, B> F<Either<A, B>, ArrayBlockingQueue<A>> Either_ArrayBlockingQueueA(final boolean fair) { return Function.compose(Java.Option_ArrayBlockingQueue(fair), Conversions.Either_OptionA()); } /** * A function that converts eithers to array blocking queues. * * @param fair The argument to pass to the constructor of the array blocking queue. * @return A function that converts eithers to array blocking queues. */ public static <A, B> F<Either<A, B>, ArrayBlockingQueue<B>> Either_ArrayBlockingQueueB(final boolean fair) { return Function.compose(Java.Option_ArrayBlockingQueue(fair), Conversions.Either_OptionB()); } /** * A function that converts eithers to concurrent linked queues. * * @return A function that converts eithers to concurrent linked queues. */ public static <A, B> F<Either<A, B>, ConcurrentLinkedQueue<A>> Either_ConcurrentLinkedQueueA() { return Function.compose(Java.Option_ConcurrentLinkedQueue(), Conversions.Either_OptionA()); } /** * A function that converts eithers to concurrent linked queues. * * @return A function that converts eithers to concurrent linked queues. */ public static <A, B> F<Either<A, B>, ConcurrentLinkedQueue<B>> Either_ConcurrentLinkedQueueB() { return Function.compose(Java.Option_ConcurrentLinkedQueue(), Conversions.Either_OptionB()); } /** * A function that converts eithers to copy on write array lists. * * @return A function that converts eithers to copy on write array lists. */ public static <A, B> F<Either<A, B>, CopyOnWriteArrayList<A>> Either_CopyOnWriteArrayListA() { return Function.compose(Java.Option_CopyOnWriteArrayList(), Conversions.Either_OptionA()); } /** * A function that converts eithers to copy on write array lists. * * @return A function that converts eithers to copy on write array lists. */ public static <A, B> F<Either<A, B>, CopyOnWriteArrayList<B>> Either_CopyOnWriteArrayListB() { return Function.compose(Java.Option_CopyOnWriteArrayList(), Conversions.Either_OptionB()); } /** * A function that converts eithers to copy on write array sets. * * @return A function that converts eithers to copy on write array sets. */ public static <A, B> F<Either<A, B>, CopyOnWriteArraySet<A>> Either_CopyOnWriteArraySetA() { return Function.compose(Java.Option_CopyOnWriteArraySet(), Conversions.Either_OptionA()); } /** * A function that converts eithers to copy on write array sets. * * @return A function that converts eithers to copy on write array sets. */ public static <A, B> F<Either<A, B>, CopyOnWriteArraySet<B>> Either_CopyOnWriteArraySetB() { return Function.compose(Java.Option_CopyOnWriteArraySet(), Conversions.Either_OptionB()); } /** * A function that converts eithers to delay queues. * * @return A function that converts eithers to delay queues. */ public static <A extends Delayed, B> F<Either<A, B>, DelayQueue<A>> Either_DelayQueueA() { return Function.compose(Java.Option_DelayQueue(), Conversions.Either_OptionA()); } /** * A function that converts eithers to delay queues. * * @return A function that converts eithers to delay queues. */ public static <A, B extends Delayed> F<Either<A, B>, DelayQueue<B>> Either_DelayQueueB() { return Function.compose(Java.Option_DelayQueue(), Conversions.Either_OptionB()); } /** * A function that converts eithers to linked blocking queues. * * @return A function that converts eithers to linked blocking queues. */ public static <A, B> F<Either<A, B>, LinkedBlockingQueue<A>> Either_LinkedBlockingQueueA() { return Function.compose(Java.Option_LinkedBlockingQueue(), Conversions.Either_OptionA()); } /** * A function that converts eithers to linked blocking queues. * * @return A function that converts eithers to linked blocking queues. */ public static <A, B> F<Either<A, B>, LinkedBlockingQueue<B>> Either_LinkedBlockingQueueB() { return Function.compose(Java.Option_LinkedBlockingQueue(), Conversions.Either_OptionB()); } /** * A function that converts eithers to priority blocking queues. * * @return A function that converts eithers to priority blocking queues. */ public static <A, B> F<Either<A, B>, PriorityBlockingQueue<A>> Either_PriorityBlockingQueueA() { return Function.compose(Java.Option_PriorityBlockingQueue(), Conversions.Either_OptionA()); } /** * A function that converts eithers to priority blocking queues. * * @return A function that converts eithers to priority blocking queues. */ public static <A, B> F<Either<A, B>, PriorityBlockingQueue<B>> Either_PriorityBlockingQueueB() { return Function.compose(Java.Option_PriorityBlockingQueue(), Conversions.Either_OptionB()); } /** * A function that converts eithers to synchronous queues. * * @param fair The argument to pass to the constructor of the synchronous queue. * @return A function that converts eithers to synchronous queues. */ public static <A, B> F<Either<A, B>, SynchronousQueue<A>> Either_SynchronousQueueA(final boolean fair) { return Function.compose(Java.Option_SynchronousQueue(fair), Conversions.Either_OptionA()); } /** * A function that converts eithers to synchronous queues. * * @param fair The argument to pass to the constructor of the synchronous queue. * @return A function that converts eithers to synchronous queues. */ public static <A, B> F<Either<A, B>, SynchronousQueue<B>> Either_SynchronousQueueB(final boolean fair) { return Function.compose(Java.Option_SynchronousQueue(fair), Conversions.Either_OptionB()); } // END Either -> // BEGIN String -> /** * A function that converts strings to array lists. */ public static final F<String, ArrayList<Character>> String_ArrayList = Function.compose(Java.List_ArrayList(), Conversions.String_List); /** * A function that converts strings to hash sets. */ public static final F<String, HashSet<Character>> String_HashSet = Function.compose(Java.List_HashSet(), Conversions.String_List); /** * A function that converts strings to linked hash sets. */ public static final F<String, LinkedHashSet<Character>> String_LinkedHashSet = Function.compose(Java.List_LinkedHashSet(), Conversions.String_List); /** * A function that converts strings to linked lists. */ public static final F<String, LinkedList<Character>> String_LinkedList = Function.compose(Java.List_LinkedList(), Conversions.String_List); /** * A function that converts strings to priority queues. */ public static final F<String, PriorityQueue<Character>> String_PriorityQueue = Function.compose(Java.List_PriorityQueue(), Conversions.String_List); /** * A function that converts strings to stacks. */ public static final F<String, Stack<Character>> String_Stack = Function.compose(Java.List_Stack(), Conversions.String_List); /** * A function that converts strings to tree sets. */ public static final F<String, TreeSet<Character>> String_TreeSet = Function.compose(Java.List_TreeSet(), Conversions.String_List); /** * A function that converts strings to vectors. */ public static final F<String, Vector<Character>> String_Vector = Function.compose(Java.List_Vector(), Conversions.String_List); /** * A function that converts strings to array blocking queues. * * @param fair The argument to pass to the constructor of the array blocking queue. * @return A function that converts strings to array blocking queues. */ public static F<String, ArrayBlockingQueue<Character>> String_ArrayBlockingQueue(final boolean fair) { return Function.compose(Java.List_ArrayBlockingQueue(fair), Conversions.String_List); } /** * A function that converts strings to concurrent linked queues. */ public static final F<String, ConcurrentLinkedQueue<Character>> String_ConcurrentLinkedQueue = Function.compose(Java.List_ConcurrentLinkedQueue(), Conversions.String_List); /** * A function that converts strings to copy on write array lists. */ public static final F<String, CopyOnWriteArrayList<Character>> String_CopyOnWriteArrayList = Function.compose(Java.List_CopyOnWriteArrayList(), Conversions.String_List); /** * A function that converts strings to copy on write array sets. */ public static final F<String, CopyOnWriteArraySet<Character>> String_CopyOnWriteArraySet = Function.compose(Java.List_CopyOnWriteArraySet(), Conversions.String_List); /** * A function that converts strings to linked blocking queues. */ public static final F<String, LinkedBlockingQueue<Character>> String_LinkedBlockingQueue = Function.compose(Java.List_LinkedBlockingQueue(), Conversions.String_List); /** * A function that converts strings to priority blocking queues. */ public static final F<String, PriorityBlockingQueue<Character>> String_PriorityBlockingQueue = Function.compose(Java.List_PriorityBlockingQueue(), Conversions.String_List); /** * A function that converts strings to synchronous queues. * * @param fair The argument to pass to the constructor of the synchronous queue. * @return A function that converts strings to synchronous queues. */ public static F<String, SynchronousQueue<Character>> String_SynchronousQueue(final boolean fair) { return Function.compose(Java.List_SynchronousQueue(fair), Conversions.String_List); } // END String -> // BEGIN StringBuffer -> /** * A function that converts string buffers to array lists. */ public static final F<StringBuffer, ArrayList<Character>> StringBuffer_ArrayList = Function.compose(Java.List_ArrayList(), Conversions.StringBuffer_List); /** * A function that converts string buffers to hash sets. */ public static final F<StringBuffer, HashSet<Character>> StringBuffer_HashSet = Function.compose(Java.List_HashSet(), Conversions.StringBuffer_List); /** * A function that converts string buffers to linked hash sets. */ public static final F<StringBuffer, LinkedHashSet<Character>> StringBuffer_LinkedHashSet = Function.compose(Java.List_LinkedHashSet(), Conversions.StringBuffer_List); /** * A function that converts string buffers to linked lists. */ public static final F<StringBuffer, LinkedList<Character>> StringBuffer_LinkedList = Function.compose(Java.List_LinkedList(), Conversions.StringBuffer_List); /** * A function that converts string buffers to priority queues. */ public static final F<StringBuffer, PriorityQueue<Character>> StringBuffer_PriorityQueue = Function.compose(Java.List_PriorityQueue(), Conversions.StringBuffer_List); /** * A function that converts string buffers to stacks. */ public static final F<StringBuffer, Stack<Character>> StringBuffer_Stack = Function.compose(Java.List_Stack(), Conversions.StringBuffer_List); /** * A function that converts string buffers to tree sets. */ public static final F<StringBuffer, TreeSet<Character>> StringBuffer_TreeSet = Function.compose(Java.List_TreeSet(), Conversions.StringBuffer_List); /** * A function that converts string buffers to vectors. */ public static final F<StringBuffer, Vector<Character>> StringBuffer_Vector = Function.compose(Java.List_Vector(), Conversions.StringBuffer_List); /** * A function that converts string buffers to array blocking queues. * * @param fair The argument to pass to the constructor of the array blocking queue. * @return A function that converts string buffers to array blocking queues. */ public static F<StringBuffer, ArrayBlockingQueue<Character>> StringBuffer_ArrayBlockingQueue(final boolean fair) { return Function.compose(Java.List_ArrayBlockingQueue(fair), Conversions.StringBuffer_List); } /** * A function that converts string buffers to concurrent linked queues. */ public static final F<StringBuffer, ConcurrentLinkedQueue<Character>> StringBuffer_ConcurrentLinkedQueue = Function.compose(Java.List_ConcurrentLinkedQueue(), Conversions.StringBuffer_List); /** * A function that converts string buffers to copy on write array lists. */ public static final F<StringBuffer, CopyOnWriteArrayList<Character>> StringBuffer_CopyOnWriteArrayList = Function.compose(Java.List_CopyOnWriteArrayList(), Conversions.StringBuffer_List); /** * A function that converts string buffers to copy on write array sets. */ public static final F<StringBuffer, CopyOnWriteArraySet<Character>> StringBuffer_CopyOnWriteArraySet = Function.compose(Java.List_CopyOnWriteArraySet(), Conversions.StringBuffer_List); /** * A function that converts string buffers to linked blocking queues. */ public static final F<StringBuffer, LinkedBlockingQueue<Character>> StringBuffer_LinkedBlockingQueue = Function.compose(Java.List_LinkedBlockingQueue(), Conversions.StringBuffer_List); /** * A function that converts string buffers to priority blocking queues. */ public static final F<StringBuffer, PriorityBlockingQueue<Character>> StringBuffer_PriorityBlockingQueue = Function.compose(Java.List_PriorityBlockingQueue(), Conversions.StringBuffer_List); /** * A function that converts string buffers to synchronous queues. * * @param fair The argument to pass to the constructor of the synchronous queue. * @return A function that converts string buffers to synchronous queues. */ public static F<StringBuffer, SynchronousQueue<Character>> StringBuffer_SynchronousQueue(final boolean fair) { return Function.compose(Java.List_SynchronousQueue(fair), Conversions.StringBuffer_List); } // END StringBuffer -> // BEGIN StringBuilder -> /** * A function that converts string builders to array lists. */ public static final F<StringBuilder, ArrayList<Character>> StringBuilder_ArrayList = Function.compose(Java.List_ArrayList(), Conversions.StringBuilder_List); /** * A function that converts string builders to hash sets. */ public static final F<StringBuilder, HashSet<Character>> StringBuilder_HashSet = Function.compose(Java.List_HashSet(), Conversions.StringBuilder_List); /** * A function that converts string builders to linked hash sets. */ public static final F<StringBuilder, LinkedHashSet<Character>> StringBuilder_LinkedHashSet = Function.compose(Java.List_LinkedHashSet(), Conversions.StringBuilder_List); /** * A function that converts string builders to linked lists. */ public static final F<StringBuilder, LinkedList<Character>> StringBuilder_LinkedList = Function.compose(Java.List_LinkedList(), Conversions.StringBuilder_List); /** * A function that converts string builders to priority queues. */ public static final F<StringBuilder, PriorityQueue<Character>> StringBuilder_PriorityQueue = Function.compose(Java.List_PriorityQueue(), Conversions.StringBuilder_List); /** * A function that converts string builders to stacks. */ public static final F<StringBuilder, Stack<Character>> StringBuilder_Stack = Function.compose(Java.List_Stack(), Conversions.StringBuilder_List); /** * A function that converts string builders to tree sets. */ public static final F<StringBuilder, TreeSet<Character>> StringBuilder_TreeSet = Function.compose(Java.List_TreeSet(), Conversions.StringBuilder_List); /** * A function that converts string builders to vectors. */ public static final F<StringBuilder, Vector<Character>> StringBuilder_Vector = Function.compose(Java.List_Vector(), Conversions.StringBuilder_List); /** * A function that converts string builders to array blocking queues. * * @param fair The argument to pass to the constructor of the array blocking queue. * @return A function that converts string builders to array blocking queues. */ public static F<StringBuilder, ArrayBlockingQueue<Character>> StringBuilder_ArrayBlockingQueue(final boolean fair) { return Function.compose(Java.List_ArrayBlockingQueue(fair), Conversions.StringBuilder_List); } /** * A function that converts string builders to concurrent linked queues. */ public static final F<StringBuilder, ConcurrentLinkedQueue<Character>> StringBuilder_ConcurrentLinkedQueue = Function.compose(Java.List_ConcurrentLinkedQueue(), Conversions.StringBuilder_List); /** * A function that converts string builders to copy on write array lists. */ public static final F<StringBuilder, CopyOnWriteArrayList<Character>> StringBuilder_CopyOnWriteArrayList = Function.compose(Java.List_CopyOnWriteArrayList(), Conversions.StringBuilder_List); /** * A function that converts string builders to copy on write array sets. */ public static final F<StringBuilder, CopyOnWriteArraySet<Character>> StringBuilder_CopyOnWriteArraySet = Function.compose(Java.List_CopyOnWriteArraySet(), Conversions.StringBuilder_List); /** * A function that converts string builders to linked blocking queues. */ public static final F<StringBuilder, LinkedBlockingQueue<Character>> StringBuilder_LinkedBlockingQueue = Function.compose(Java.List_LinkedBlockingQueue(), Conversions.StringBuilder_List); /** * A function that converts string builders to priority blocking queues. */ public static final F<StringBuilder, PriorityBlockingQueue<Character>> StringBuilder_PriorityBlockingQueue = Function.compose(Java.List_PriorityBlockingQueue(), Conversions.StringBuilder_List); /** * A function that converts string builders to synchronous queues. * * @param fair The argument to pass to the constructor of the synchronous queue. * @return A function that converts string builders to synchronous queues. */ public static F<StringBuilder, SynchronousQueue<Character>> StringBuilder_SynchronousQueue(final boolean fair) { return Function.compose(Java.List_SynchronousQueue(fair), Conversions.StringBuilder_List); } // END StringBuffer -> // BEGIN ArrayList -> /** * A function that converts array lists to lists. * * @return A function that converts array lists to lists. */ public static <A> F<ArrayList<A>, List<A>> ArrayList_List() { return Java::Collection_List; } // todo // END ArrayList -> /** * A function that converts Java lists to lists. * @deprecated As of 4.3, use {@link #JavaList_List} * * @return A function that converts Java lists to lists. */ public static <A> F<java.util.List<A>, List<A>> JUList_List() { return Java::JavaList_List; } public static <A> F<java.util.List<A>, List<A>> JavaList_List() { return Java::JavaList_List; } public static <A> List<A> JavaList_List(java.util.List<A> list) { return List.iterableList(list); } // BEGIN BitSet -> /** * A function that converts bit sets to lists. */ public static final F<BitSet, List<Boolean>> BitSet_List = s -> List.unfold(i -> i == s.length() ? Option.none() : some(p(s.get(i), i + 1)), 0); // todo // END BitSet -> // BEGIN EnumSet -> /** * A function that converts enum sets to lists. * * @return A function that converts enum sets to lists. */ public static <A extends Enum<A>> F<EnumSet<A>, List<A>> EnumSet_List() { return Java::Collection_List; } public static <A> List<A> Collection_List(Collection<A> c) { return Java.<A>Collection_List().f(c); } public static <A> F<Collection<A>, List<A>> Collection_List() { return c -> List.list(c.toArray(array(c.size()))); } @SafeVarargs private static <E> E[] array(int length, E... array) { return Arrays.copyOf(array, length); } // todo // END EnumSet -> // BEGIN HashSet -> /** * A function that converts hash sets to lists. * * @return A function that converts hash sets to lists. */ public static <A> F<HashSet<A>, List<A>> HashSet_List() { return Java::Collection_List; } // todo // END HashSet -> // BEGIN LinkedHashSet -> /** * A function that converts linked hash sets to lists. * * @return A function that converts linked hash sets to lists. */ public static <A> F<LinkedHashSet<A>, List<A>> LinkedHashSet_List() { return Java::Collection_List; } // todo // END LinkedHashSet -> // BEGIN Linked List -> /** * A function that converts linked lists to lists. * * @return A function that converts linked lists to lists. */ public static <A> F<LinkedList<A>, List<A>> LinkedList_List() { return Java::Collection_List; } // todo // END Linked List -> // BEGIN PriorityQueue -> /** * A function that converts priority queues to lists. * * @return A function that converts priority queues to lists. */ public static <A> F<PriorityQueue<A>, List<A>> PriorityQueue_List() { return Java::Collection_List; } // todo // END PriorityQueue -> // BEGIN Stack -> /** * A function that converts stacks to lists. * * @return A function that converts stacks to lists. */ public static <A> F<Stack<A>, List<A>> Stack_List() { return Java::Collection_List; } // todo // END Stack -> // BEGIN TreeSet -> /** * A function that converts tree sets to lists. * * @return A function that converts tree sets to lists. */ public static <A> F<TreeSet<A>, List<A>> TreeSet_List() { return Java::Collection_List; } // todo // END TreeSet -> // BEGIN Vector -> /** * A function that converts vectors to lists. * * @return A function that converts vectors to lists. */ public static <A> F<Vector<A>, List<A>> Vector_List() { return Java::Collection_List; } // todo // END Vector -> // BEGIN ArrayBlockingQueue -> /** * A function that converts array blocking queues to lists. * * @return A function that converts array blocking queues to lists. */ public static <A> F<ArrayBlockingQueue<A>, List<A>> ArrayBlockingQueue_List() { return Java::Collection_List; } // todo // END ArrayBlockingQueue -> // BEGIN ConcurrentLinkedQueue -> /** * A function that converts concurrent linked queues to lists. * * @return A function that converts concurrent linked queues to lists. */ public static <A> F<ConcurrentLinkedQueue<A>, List<A>> ConcurrentLinkedQueue_List() { return Java::Collection_List; } // todo // END ConcurrentLinkedQueue -> // BEGIN CopyOnWriteArrayList -> /** * A function that converts copy on write array lists to lists. * * @return A function that converts copy on write array lists to lists. */ public static <A> F<CopyOnWriteArrayList<A>, List<A>> CopyOnWriteArrayList_List() { return Java::Collection_List; } // todo // END CopyOnWriteArrayList -> // BEGIN CopyOnWriteArraySet -> /** * A function that converts copy on write array sets to lists. * * @return A function that converts copy on write array sets to lists. */ public static <A> F<CopyOnWriteArraySet<A>, List<A>> CopyOnWriteArraySet_List() { return Java::Collection_List; } // todo // END CopyOnWriteArraySet -> // BEGIN DelayQueue -> /** * A function that converts delay queues to lists. * * @return A function that converts delay queues to lists. */ public static <A extends Delayed> F<DelayQueue<A>, List<A>> DelayQueue_List() { return Java::Collection_List; } // todo // END DelayQueue -> // BEGIN LinkedBlockingQueue -> /** * A function that converts linked blocking queues to lists. * * @return A function that converts linked blocking queues to lists. */ public static <A> F<LinkedBlockingQueue<A>, List<A>> LinkedBlockingQueue_List() { return Java::Collection_List; } // todo // END LinkedBlockingQueue -> // BEGIN PriorityBlockingQueue -> /** * A function that converts priority blocking queues to lists. * * @return A function that converts priority blocking queues to lists. */ public static <A> F<PriorityBlockingQueue<A>, List<A>> PriorityBlockingQueue_List() { return Java::Collection_List; } // todo // END PriorityBlockingQueue -> // BEGIN SynchronousQueue -> /** * A function that converts synchronous queues to lists. * * @return A function that converts synchronous queues to lists. */ public static <A> F<SynchronousQueue<A>, List<A>> SynchronousQueue_List() { return Java::Collection_List; } // todo // END SynchronousQueue -> // BEGIN Callable -> public static <A> F<P1<A>, Callable<A>> P1_Callable() { return a -> a::_1; } // END Callable -> // BEGIN Future -> public static <A> F<Future<A>, P1<Either<Exception, A>>> Future_P1() { return a -> P.lazy(() -> { Either<Exception, A> r; try { r = Either.right(a.get()); } catch (Exception e) { r = Either.left(e); } return r; }); } // END Future -> }