TypeChecking

- Added the mathematics behind the coercion function
This commit is contained in:
Tristan B. Velloza Kildaire 2023-07-08 11:55:56 +02:00
parent ae9cf2de84
commit 6d0750cf73
2 changed files with 29 additions and 2 deletions

View File

@ -104,6 +104,21 @@ This would result in a situation where we have the following production
------------------------------------------------------------------------
### Type checking, coercion and enforcement
### Enforcement
$A_{1},\,A_{2}\ldots A_{n}$
Enforcement is the procedure of ensuring that a given `Value`-based
instruction, $instr_{i}$, conforms to the target type or *“to-type”*,
$type_{i}$. An optional flag can be passed such that if the
$typeof(instr_{i}) \neq type_{i}$ that it can then attempt coercion as
to bring it to the equal type.
In the case of coercion an application of $coerce()$ is applied to the
incoming instruction, as to produce an instruction $coerceInstr_{i}$, a
`CastedValueInstruction`, which wraps the original instruction inside of
it but allows for a type cast/conversion to the target type, therefore
making the statement, $type_{i} = typeof(coerce(instr_{i}))$ (which is
the same as $type_{i} = typeof(coerceInstr_{i})$), valid.
TODO: Document this now

View File

@ -209,6 +209,18 @@ digraph CodequeueProcess {
---
### Type checking, coercion and enforcement
### Enforcement
$A_{1},\,A_{2}\ldots A_{n}$
Enforcement is the procedure of ensuring that a given `Value`-based instruction, $instr_{i}$, conforms to the target type or _"to-type"_, $type_{i}$. An optional flag can be passed such that if the $typeof(instr_{i}) \neq type_{i}$ that it can then attempt coercion as to bring it to the equal type.
#### TODO: isSameType
TODO: Document isSameTYpe
#### Coercion
In the case of coercion an application of $coerce()$ is applied to the incoming instruction, as to produce an instruction $coerceInstr_{i}$, a `CastedValueInstruction`, which wraps the original instruction inside of it but allows for a type cast/conversion to the target type, therefore making the statement, $type_{i} = typeof(coerce(instr_{i}))$ (which is the same as $type_{i} = typeof(coerceInstr_{i})$), valid.
TODO: Document this now