InferedType Type
Represents inferred structural type. A type may be either primitive type
(one of those listed by `primitiveTypes`) or it can be collection,
(named) record and heterogeneous type. We also have `Null` type (which is
a subtype of all non-primitive types) and universal `Top` type.
* For collection, we infer the types of different things that appear in
the collection and how many times they do.
* A heterogeneous type (sum type) is simply a choice containing one
of multiple different possibilities
Why is collection not simply a list of Heterogeneous types? If we used that
we would lose information about multiplicity and so we would not be able
to generate nicer types!
Union cases
| Union case |
Description
|
Full Usage:
Collection(order, types)
Parameters:
InferedTypeTag list
types : Map<InferedTypeTag, (InferedMultiplicity * InferedType)>
|
|
Full Usage:
Heterogeneous(types, containsOptional)
Parameters:
Map<InferedTypeTag, InferedType>
containsOptional : bool
|
|
|
|
Full Usage:
Null
|
|
|
|
Full Usage:
Record(name, fields, optional)
Parameters:
string option
fields : InferedProperty list
optional : bool
|
|
Full Usage:
Top
|
|
Instance members
| Instance member |
Description
|
|
|
Full Usage:
this.EnsuresHandlesMissingValues
Parameters:
bool
Returns: InferedType
|
When allowEmptyValues is true, we allow "" and double.NaN, otherwise we make the type optional and use None instead. It's currently only true in CsvProvider when PreferOptionals is set to false
|
|
|
Full Usage:
this.IsCollection
Returns: bool
|
|
Full Usage:
this.IsHeterogeneous
Returns: bool
|
|
Full Usage:
this.IsJson
Returns: bool
|
|
Full Usage:
this.IsNull
Returns: bool
|
|
Full Usage:
this.IsOptional
Returns: bool
|
|
Full Usage:
this.IsPrimitive
Returns: bool
|
|
Full Usage:
this.IsRecord
Returns: bool
|
|
Full Usage:
this.IsTop
Returns: bool
|
|
Static members
| Static member |
Description
|
|
|
FSharp.Data