Would it be possible to have a completely type ambiguous function? Would the function have a type signature like:
Poly :: a -> a
where a is a type variable, like the syntax used with a type constructor declaration or typeclass requirement?
data TypeConstructor a = One | Two a
Func :: Num a => a -> a
Would it be possible to make a ubiquitous id function that always returns it's own value without having to know what value constructors are in use?
id :: a -> a
Like others have said, Haskell functions are automatically polymorphic by default if they don't use any concrete features of the underlying type. If you open up ghci and type:
>>> let f x = x
... then ask it the type of f, it will automatically infer that f is completely polymorphic:
>>> :type f
f :: t -> t
Same thing if you use a file. You can just define:
f x = x
... and the compiler will infer that f has type a -> a. You can also explicitly annotate f, too:
f :: a -> a
f x = x
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With