borrow the approach of hask, an instantiation of an arrow is proof that its domain and codomain are objects