Skip to content

Instantly share code, notes, and snippets.

@Bronsa
Created November 1, 2012 14:40
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Bronsa/3994018 to your computer and use it in GitHub Desktop.
Save Bronsa/3994018 to your computer and use it in GitHub Desktop.
package clojure.lang;
import java.util.Comparator;
import java.util.Map;
import java.util.concurrent.Callable;
public class interfaces {
public static interface ISeq extends IPersistentCollection {
Object first();
//ISeq rest ();
ISeq next();
}
public static interface Seqable {
ISeq seq();
}
public static interface Counted {
int count();
}
public static interface IEquiv {
boolean equiv(Object o);
}
public static interface IPersistentCollection extends Seqable, IEquiv {
IPersistentCollection conj(Object o);
}
public static interface IEmptyableCollection extends IPersistentCollection {
IEmptyableCollection empty();
}
public static interface IMeta {
IPersistentMap meta();
}
//IObj
public static interface IWithMeta extends IMeta {
IWithMeta withMeta(IPersistentMap meta);
}
//IReference
public static interface IResetMeta extends IMeta {
IWithMeta resetMeta(IPersistentMap meta);
}
public static interface IHashEq {
int hashEq();
}
public static interface Indexed extends Counted {
Object nth(int i);
Object nth(int i, Object notFound);
}
public static interface ILookup {
Object lookup(Object key);
Object lookup(Object key, Object notFound);
}
public interface IMapEntry extends Map.Entry {
Object key();
Object val();
}
public interface IContains extends ILookup {
boolean contains(Object key);
}
public interface Associative extends IPersistentCollection, IContains {
//IMapEntry lookupEntry(Object key);
Associative assoc(Object key, Object val);
}
public static interface IPersistentMap extends Iterable, Associative, Counted {
IPersistentMap assoc(Object key, Object val);
//IPersistentMap assocEx(Object key, Object val);
IPersistentMap dissoc(Object key);
}
public static interface IPersistentSet extends IPersistentCollection, Counted, IContains {
IPersistentSet disj(Object key);
}
public static interface IPersistentStack extends IPersistentCollection {
Object peek();
IPersistentStack pop();
}
public static interface Reversible extends Seqable{
ISeq rseq() ;
}
public static interface Sequential {}
public static interface IPersistentList extends Sequential, IPersistentStack{}
public static interface IType {}
public static interface IRecord {}
public static interface IPersistentVector extends Associative, Sequential, IPersistentStack, Reversible, Indexed {
//IPersistentVector assocN(int i, Object val);
}
public static interface Sorted {
Comparator comparator();
ISeq sortedSeq(boolean ascending);
ISeq sortedSeqFrom(Object key, boolean ascending);
Object entryKey(Object entry);
}
public static interface ITransientCollection {
ITransientCollection transient_conj(Object val);
IPersistentCollection persistent();
}
public static interface IEditableCollection {
ITransientCollection asTransient();
}
public static interface ITransientAssociative extends ITransientCollection, ILookup {
ITransientAssociative transient_assoc(Object key, Object val);
}
public static interface ITransientMap extends ITransientAssociative, Counted /*, Iterable */{
ITransientMap transient_assoc(Object key, Object val);
ITransientMap transient_dissoc(Object key);
IPersistentMap persistent();
}
public static interface ITransientSet extends ITransientCollection, Counted, IContains {
IPersistentSet disj(Object key);
}
public static interface ITransientVector extends ITransientAssociative, Indexed, Sequential {
//ITransientVector transient_assocN(int i, Object val);
ITransientVector transient_pop();
}
public static interface IChunk extends Indexed {
IChunk chunk_rest(); //dropFirst
}
public static interface IChunkedSeq extends ISeq, Sequential {
IChunk chunked_first();
//ISeq chuncked_rest();
ISeq chuncked_next();
}
public static interface IReduce {
Object reduce(IFn f) ;
Object reduce(IFn f, Object start) ;
}
public static interface IKVReduce {
Object kvreduce(IFn f, Object init);
}
//IOrdinal
public static interface IndexedSeq extends ISeq, Sequential, Counted {
public int index();
}
public static interface Named {
String name();
String namespace();
}
public static interface IDeref {
Object deref();
}
public static interface IPending {
boolean isRealized();
}
public static interface IBlockingDeref extends IDeref, IPending{
Object derefWithTimeout(long ms, Object timeoutValue);
}
public static interface IValidable {
void setValidator(IFn fn);
IFn getValidator();
void validate(Object val);
}
public static interface IWatchable {
IPersistentMap getWatches();
IWatchable addWatch(Object key, IFn callback);
IWatchable removeWatch(Object key);
void notifyWatches(Object oldval, Object newval);
}
public static interface IFn extends Callable, Runnable{
Object invoke();
Object invoke(Object arg1);
Object invoke(Object arg1, Object arg2);
Object invoke(Object arg1, Object arg2, Object arg3);
Object invoke(Object arg1, Object arg2, Object arg3, Object arg4);
Object invoke(Object arg1, Object arg2, Object arg3, Object arg4, Object arg5);
Object invoke(Object arg1, Object arg2, Object arg3, Object arg4, Object arg5, Object arg6);
Object invoke(Object arg1, Object arg2, Object arg3, Object arg4, Object arg5, Object arg6, Object arg7);
Object invoke(Object arg1, Object arg2, Object arg3, Object arg4, Object arg5, Object arg6, Object arg7,
Object arg8);
Object invoke(Object arg1, Object arg2, Object arg3, Object arg4, Object arg5, Object arg6, Object arg7,
Object arg8, Object arg9);
Object invoke(Object arg1, Object arg2, Object arg3, Object arg4, Object arg5, Object arg6, Object arg7,
Object arg8, Object arg9, Object arg10);
Object invoke(Object arg1, Object arg2, Object arg3, Object arg4, Object arg5, Object arg6, Object arg7,
Object arg8, Object arg9, Object arg10, Object arg11);
Object invoke(Object arg1, Object arg2, Object arg3, Object arg4, Object arg5, Object arg6, Object arg7,
Object arg8, Object arg9, Object arg10, Object arg11, Object arg12);
Object invoke(Object arg1, Object arg2, Object arg3, Object arg4, Object arg5, Object arg6, Object arg7,
Object arg8, Object arg9, Object arg10, Object arg11, Object arg12, Object arg13);
Object invoke(Object arg1, Object arg2, Object arg3, Object arg4, Object arg5, Object arg6, Object arg7,
Object arg8, Object arg9, Object arg10, Object arg11, Object arg12, Object arg13, Object arg14);
Object invoke(Object arg1, Object arg2, Object arg3, Object arg4, Object arg5, Object arg6, Object arg7,
Object arg8, Object arg9, Object arg10, Object arg11, Object arg12, Object arg13, Object arg14,
Object arg15);
Object invoke(Object arg1, Object arg2, Object arg3, Object arg4, Object arg5, Object arg6, Object arg7,
Object arg8, Object arg9, Object arg10, Object arg11, Object arg12, Object arg13, Object arg14,
Object arg15, Object arg16);
Object invoke(Object arg1, Object arg2, Object arg3, Object arg4, Object arg5, Object arg6, Object arg7,
Object arg8, Object arg9, Object arg10, Object arg11, Object arg12, Object arg13, Object arg14,
Object arg15, Object arg16, Object arg17);
Object invoke(Object arg1, Object arg2, Object arg3, Object arg4, Object arg5, Object arg6, Object arg7,
Object arg8, Object arg9, Object arg10, Object arg11, Object arg12, Object arg13, Object arg14,
Object arg15, Object arg16, Object arg17, Object arg18);
Object invoke(Object arg1, Object arg2, Object arg3, Object arg4, Object arg5, Object arg6, Object arg7,
Object arg8, Object arg9, Object arg10, Object arg11, Object arg12, Object arg13, Object arg14,
Object arg15, Object arg16, Object arg17, Object arg18, Object arg19);
Object invoke(Object arg1, Object arg2, Object arg3, Object arg4, Object arg5, Object arg6, Object arg7,
Object arg8, Object arg9, Object arg10, Object arg11, Object arg12, Object arg13, Object arg14,
Object arg15, Object arg16, Object arg17, Object arg18, Object arg19, Object arg20);
Object invoke(Object arg1, Object arg2, Object arg3, Object arg4, Object arg5, Object arg6, Object arg7,
Object arg8, Object arg9, Object arg10, Object arg11, Object arg12, Object arg13, Object arg14,
Object arg15, Object arg16, Object arg17, Object arg18, Object arg19, Object arg20,
Object... args);
Object applyTo(ISeq arglist) ;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment