You look at it wrong (although I will not blame you: at first it is very surprising). It might seem to you that the constructors follow the syntax Name of type, where part of the type follows the syntax of the normal type (which allows you to contain tuples).
In fact, tuples and constructors follow the same syntax: a constructor is just a tuple with a name in front of it:
tuple/constructor == [name of] type [* type] [* type] ...
, * , . , N , , , .
- . :
[TYPE] [POINTER] [POINTER] [POINTER]
. , , ( ), :
[TYPE] [POINTER]
|
v
[TYPE] [POINTER] [POINTER] [POINTER]
, , (- ). , name of type * type , name of (type * type), * of , , .
, : name (arg,arg). , , . , , , ( ) .
.