I have a function `(a->a)` which can take in different types but is there a way to determine what datatype the parameter is?
Like

```
foo :: a -> a
foo a == int =..
foo a == char =..

```

Is there anyway to do a check like this in haskell?