Then we say "the argument occurs in both positive and negative positions" or "the argument occurs in both covariant and contravariant positions". There doesn't seem to be a shorter name. I want to note that this kind of thing drives OOP crazy.
i recall this paper being of some help:-) http://citeseer.ist.psu.edu/castagna94covariance.html Covariance and Contravariance: Conflict without a Cause (1994) Giuseppe Castagna ACM Transactions on Programming Languages and Systems
I know that types like
data T = T (T -> T)
are inhabitated by things other than bottom (like id or \_ -> undefined), but can it be useful for *anything*?
you are in good company with that kind of question. have a look at Dana Scott's Turing Award paper for some personal notes on how he set out to show Christopher Strachey "that he was all wrong.. it [lambda-calculus] was a formal device.. it had no mathematical basis.. I had actually convinced him by 'superior logic' to give up the type-free lambda-calculus", followed by "once the doubt .. was there, it was not long before I had found one of the spaces isomorphic with its own function space, which provides a model of the 'type-free' lambda-calculus". http://awards.acm.org/citation.cfm?id=3562254&srt=all&aw=140&ao=AMTURING claus