In a domain and in categories referenced in a domain the notation % represents "this domain" (or self in some programming languages). So we commonly write for example: with f: (%,%) -> % to indicate a function f which takes a pair of values in this domain and returns a value in this same domain - whatever domain we happen to be talking about in this context. But what if we are interested in the domain as a functor? Suppose I
was writing an "endofunctor" domain constructor like fricas (1) -> <spad> fricas )abbrev domain MYSET MySet MySet(T:SetCategory): SetAggregate(T) with finiteAggregate join: MySet MySet T -> MySet T == add Rep == List T --rep(x:%):Rep == x pretend Rep --per(x:Rep):% == x pretend % fricas Compiling FriCAS source code from file /var/lib/zope2.10/instance/axiom-wiki/var/LatexWiki/7834450198179479618-25px001.spad using old system compiler. MYSET abbreviates domain MySet ------------------------------------------------------------------------ initializing NRLIB MYSET for MySet compiling into NRLIB MYSET ************* USER ERROR ********** available signatures for Rep: NONE NEED Rep: () -> ? ****** comp fails at level 1 with expression: ****** ((DEF (|Rep|) (NIL) (|List| T$))) ****** level 1 ****** $x:= (DEF (Rep) (NIL) (List T$)) $m:= $EmptyMode $f:= ((((~= #) (= #) (|coerce| #) (|latex| #) ...))) fricas m1:MySet(Integer) := construct([1, |