# is identity the only polymorphic function without typeclasses?

**Cagdas Ozgenc
**
co19@cornell.edu

*Mon, 3 Mar 2003 11:00:36 +0200*

>* Cagdas Ozgenc <co19@cornell.edu> wrote:
*>*
*>* > Greetings,
*>*
*>* > Is identity function the only meaningful function one can write
*>* > without constraining the type variable using a typeclass? If not,
*>* > could you please give a counter-example?
*>*
*>* Certainly you can write lots of ``meaningful function''s without type
*>* classes: not, (&&), (||), as well as many more complicated functions at
*>* more complicated types.
*>*
*>* You can also write useful polymorphic functions without type classes, as
*>* long as you specify at least one type. For example, you can write
*>* polymorphic functions over/yielding lists, such as repeat, cycle, map
*>* and its many relatives, foldr and its many relatives, take and its
*>* relatives, takeWhile and its relatives, etc. Similar functions often
*>* exist for other types.
*>*
*>* I'm somewhat curious, though: why do you ask this question? How do you
*>* expand your question that makes the answer seem to be ``no''?
*
I did not mean to include functions that take type constructors as
parameters (so lists are out of my discussion scope). I am only considering
functions that uses type variables that are not restricted by typeclasses.
In this setting could you give a few useful function signatures, and their
explanation? How does "not" work polymorphically for example?