In Haskell we have a tuple type like (a, b, ...). I am trying to read some SML code and I already know that a value (a, b) type is a * b. But then I saw this:
type ('a,'b) reader = 'b -> ('a * 'b) option
and I understand ('a * 'b) option - in Haskell it's Maybe (a,b), but what is ('a,'b) reader ?! Why is not it ('a * 'b) reader? As I got the syntax of type level tuples is something * something.
When introducing a type variable for a type, the parentheses are not necessary. E.g.
When introducing more than one type variable, we use parens and commas. E.g.
As noted in comments, this does not describe a tuple.