Gaby described how to obtain the type of a functor. A functor is an "unapplied" domain constructor. A domain constructor is an expression. So for example Complex Integer
is a domain constructor. Complex
is the functor.
Example Complex
fricas
)boot getConstructorSignature 'Complex
(EVAL-WHEN (EVAL LOAD)
(PROG () (RETURN (|getConstructorSignature| '|Complex|))))
Value = ((|Join| (|ComplexCategory| |#1|)
(CATEGORY |package|
(IF (|has| |#1| (|OpenMath|))
(ATTRIBUTE (|OpenMath|))
|noBranch|)))
(|CommutativeRing|))
--)boot getConstructorSignature('Complex).target
fricas
)boot first getConstructorSignature('Complex)
(EVAL-WHEN (EVAL LOAD)
(PROG () (RETURN (CAR (|getConstructorSignature| '|Complex|)))))
Value = (|Join| (|ComplexCategory| |#1|)
(CATEGORY |package|
(IF (|has| |#1| (|OpenMath|))
(ATTRIBUTE (|OpenMath|))
|noBranch|)))
--)boot getConstructorSignature('Complex).source
fricas
)boot first rest getConstructorSignature('Complex)
(EVAL-WHEN (EVAL LOAD)
(PROG () (RETURN (CAR (CDR (|getConstructorSignature| '|Complex|))))))
Value = (|CommutativeRing|)