Home > Blockchain >  How do you define a function type in Haskell?
How do you define a function type in Haskell?

Time:09-05

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

CodePudding user response:

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!

  • Related