using System;
using System.Collections.Generic;
using System.Text;
namespace CategoryTheory
{
/// <summary>
/// The math category functor
/// </summary>
public interface IFunctor : ICategoryArrow, ICategoryObject
{
/// <summary>
/// Calculates arrow
/// </summary>
/// <param name="arrow">The source arrow</param>
/// <returns>The target arrow</returns>
ICategoryArrow CalculateArrow(ICategoryArrow arrow);
/// <summary>
/// Calculates an arrow
/// </summary>
/// <param name="source">The source of the source arrow</param>
/// <param name="target">The target of the source arrow</param>
/// <param name="arrow">The source arrow</param>
/// <returns>The target arrow</returns>
ICategoryArrow CalculateArrow(ICategoryObject source,
ICategoryObject target, ICategoryArrow arrow);
/// <summary>
/// Calculates an object
/// </summary>
/// <param name="obj">The source object</param>
/// <returns>The target object</returns>
ICategoryObject CalculateObject(ICategoryObject obj);
/// <summary>
/// The "is covariant" sign
/// </summary>
bool IsCovariant
{
get;
}
}
}