Safe Haskell | Safe-Inferred |
---|
Type descriptions of the Val
.
This is in its own module so Derive.Deriver.Monad can import it without importing Derive.Typecheck.
Synopsis
- data Type
- = TVal
- | TSignal NumType NumValue
- | TPSignal
- | TAttributes
- | TControlRef
- | TPControlRef
- | TPitch
- | TNotePitch
- | TStr (Maybe [Text])
- | TControl
- | TPControl
- | TNotGiven
- | TSeparator
- | TMaybe Type
- | TEither Type Type
- | TPair Type Type
- | TQuoted
- | TCFunction
- | TPFunction
- | TList Type
- | TDeriver Text
- | TOther Text
- data NumType
- data NumValue
- general_type_of :: Val -> Type
- specific_type_of :: Val -> Type
Documentation
TVal | This is the "any" type. |
TSignal NumType NumValue | |
TPSignal | |
TAttributes | |
TControlRef | |
TPControlRef | |
TPitch | |
TNotePitch | |
TStr (Maybe [Text]) | Text string, with enum values if it's an enum. |
TControl | |
TPControl | |
TNotGiven | |
TSeparator | |
TMaybe Type | |
TEither Type Type | |
TPair Type Type | Two types in sequence. This has no corresponding Typecheck instance since it doesn't correspond to a single Val, but is used by Derive.Sig for documentation. |
TQuoted | A |
TCFunction | |
TPFunction | |
TList Type | |
TDeriver Text | |
TOther Text | Typecheck instances that don't correspond directly to a Val type get this, as a plain description. |
Some of these are subtypes of others (TTranspose includes TDefaultDiatonic), but since they're just documentation, it shouldn't matter.
TUntyped | |
TInt | |
TTranspose | |
TDefaultDiatonic | |
TDefaultChromatic | |
TNoteNumber | |
TTime | |
TDefaultReal | |
TDefaultScore | |
TRealTime | |
TScoreTime |
Numeric subtypes.
TAny | |
TNonNegative | =0 |
TPositive | 0 |
TNormalized | 0 <= a <= 1 |
TNormalizedBipolar |
|
general_type_of :: Val -> Type Source #
Infer a general type. This is also for type errors, but for env type
check errors, which use types_equal
, which doesn't check the
value.
specific_type_of :: Val -> Type Source #
Infer the most specific type possible, looking at the value inside. This is for documentation (e.g. type error messages) for values.