KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > JSci > maths > categories > HomFunctor


1 package JSci.maths.categories;
2
3 /**
4 * The HomFunctor class encapsulates the hom-bifunctor.
5 * @version 1.0
6 * @author Mark Hale
7 */

8 public class HomFunctor extends Object JavaDoc implements Bifunctor {
9         private Category cat;
10         /**
11         * Constructs the hom bifunctor for a category.
12         */

13         public HomFunctor(Category c) {
14                 cat=c;
15         }
16         /**
17         * Maps two objects to another.
18         */

19         public Object JavaDoc map(Object JavaDoc a,Object JavaDoc b) {
20                 return cat.hom(a, b);
21         }
22         /**
23         * Maps two morphisms to another.
24         */

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 JavaDoc domain() {
35                         return cat.hom(in.codomain(), out.domain());
36                 }
37                 public Object JavaDoc codomain() {
38                         return cat.hom(in.domain(), out.codomain());
39                 }
40                 public Object JavaDoc map(Object JavaDoc 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