Haskell custom data type with parameter


I have a custom data type as follows:

 data MyType a = Nothing
             | One a

The idea is to have a function that return the data type. For example,

func (One Char) should return Char -- return the data type

I tried to implement func as follow:

func :: MyType a -> a
func (One a) = a
-- don't worry about Nothing for now

The code compiled but when I tried to run func (One Char) it gives me an error: Not in scope: data constructor ‘Char’

What is going on?

Try func (One "Hello") it will work.

The reason is that Haskell thinks you are trying to give it a data-constructor because you wrote a upper-case Char so just give it some real value ;)

BTW: In case you really want to give the type Char: that's in general not possible in Haskell as you need a dependent-type caps (see Idris for example).