1 package JSci.maths.categories; 2 3 8 public class HomFunctor extends Object implements Bifunctor { 9 private Category cat; 10 13 public HomFunctor(Category c) { 14 cat=c; 15 } 16 19 public Object map(Object a,Object b) { 20 return cat.hom(a, b); 21 } 22 25 public Category.Morphism map(Category.Morphism m, Category.Morphism n) { 26 return new HomMorphism(m, n); 27 } 28 private class HomMorphism implements Category.Morphism { 29 private Category.Morphism in,out; 30 public HomMorphism(Category.Morphism m, Category.Morphism n) { 31 in=m; 32 out=n; 33 } 34 public Object domain() { 35 return cat.hom(in.codomain(), out.domain()); 36 } 37 public Object codomain() { 38 return cat.hom(in.domain(), out.codomain()); 39 } 40 public Object map(Object o) { 41 return in.compose((Category.Morphism)o).compose(out); 42 } 43 public Category.Morphism compose(Category.Morphism m) { 44 HomMorphism hm=(HomMorphism)m; 45 return new HomMorphism(hm.in.compose(in), out.compose(hm.out)); 46 } 47 } 48 } 49 50 | Popular Tags |