You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
moduleMainwhereimportPreludeimportType.Proxy (Proxy(..))
-- `i` will be determined when `x` is concretetypeF :: foralli . Rowi->RowitypeFx= ()
-- type checks; `i ~ Type`y::Proxy (F (() ::RowType))
y = Proxy-- fails:-- Type synonym Main.F is partially applied.-- Type synonyms must be applied to all of their type arguments.z::Proxy (F (() ::RowType))
z = Proxy @(F (() ::RowType))
typeG=F (() :: RowType)
-- also worksg::ProxyG
g = Proxy @G
Expected behavior
z would also pass type checking.
PureScript version
0.15.13
The text was updated successfully, but these errors were encountered:
-- `i` will be determined when `x` is concretetypeF :: foralli . Rowi->RowitypeFx= ()
typeZ :: foralli . Rowi->RowitypeZx= ()
-- fails:-- Type synonym Main.Z is partially applied.-- Type synonyms must be applied to all of their type arguments.z::Proxy (F (() ::RowType))
z = Proxy @(Z (() ::RowType))
Since the failure is in the type-application, my guess is that there is a kind-checker elaboration rule missing for type applications.
Description
Possible kind inference funkiness going on with synonyms in type applications.
Using the same type expression in an annotation vs a type application works differently.
To Reproduce
try purescript
Expected behavior
z
would also pass type checking.PureScript version
0.15.13
The text was updated successfully, but these errors were encountered: