Remove existential quantification from values typechecking
Clarification and motivation
Currently typeCheckValue
and typeCheckCValue
return SomeNotedValue
and SomeCValue
respectively, and that's quite weird. Both these functions in theory know type of returned value, but it is hidden under existential quantification within SomeNotedValue
and SomeCValue
.
Acceptance criteria
- Existential quantification from
SomeNotedValue
is removed (it should be made polymorphic overt
). -
SomeCValue
is removed in favor ofCValue ct
;typeCheckCValue
acceptsSing (ct :: Comparable)
instead ofCT
so that type of result is fixed toCValue ct
. - At this point,
typeCheckVerify
gets too similar totypeCheckValue
, remove it or rename respectively.