namespace Invercargill { public delegate void ItemDelegate(T item); public delegate bool FilterTransformDelegate(Tin item, ref Tout? res); public delegate Tout TransformDelegate(Tin item); public delegate TOut ZipperTransformDelegate(TFirst? item1, bool item1_is_null, TSecond? item2, bool item2_is_null); public delegate bool PredicateDelegate(T item); public delegate Taggregate AggregateDelegate(Taggregate aggregate, Tin item); public delegate int CompareDelegate(T a, T b); public delegate int BinarySearchDelegate(T item); public delegate bool EqualityDelegate(T a, T b); public delegate uint HashDelegate(T item); public delegate Tout ErrorThrowingDelegate(Tin item) throws Error; public delegate Tout ErrorCatchingDelegate(Tin item, Error error); public delegate void DebugOutputDelegate(string output); }