Why do some of these definitions work, and the other fails?

Viewed 83

For some reason, definitions f3 and f6 work, while f4 does not

f3 :: Num a => a -> a -> a -> a -> a
f3 = undefined

f4 :: String a => a -> a -> a -> a -> a
f4 = undefined

f6 :: [Char] -> [Char] -> [Char] -> [Char] -> [Char]
f6 = undefined

The error message is Expected kind ‘* -> Constraint’, but ‘String’ has kind ‘*’, which I have googled but did not manage to understand

Do note the similarity between f3 and f4. Also, I am a beginner, if that is relevant to the possible explanations.

Thanks!

0 Answers
Related