Richard
Richard

Reputation: 16742

How do you define a function type in Haskell?

I'm trying to store a function type in a definition so I can reuse it, but Haskell doesn't let me do it. A function type is not a data type , nor a class, as far as I understand them. So what am I doing wrong please?

functionType = Int -> Int -> Int -> Int -> Int -> Int -> Int

myfunction :: functionType  -- <-- how do I declare this thing in a definition?
myfunction a b c d e f = a*b*c*d*e*f

Upvotes: 0

Views: 201

Answers (1)

Daniel Wagner
Daniel Wagner

Reputation: 152682

Type aliases use the type keyword in their declaration; also, as usual for the declaration of new type forms, the newly declared alias must start with an upper case letter*. So:

type FunctionType = Int -> Int -- -> ...

functionValue :: FunctionType
functionValue a = a

* ...or punctuation. Why doesn't the usual "upper-case" punctuation restriction apply? No idea. I never thought about it before trying to write this answer, and now that I have, I find that a bit weird. Perhaps the upper-case restriction on the declaration of new types should be removed!

Upvotes: 1

Related Questions