Skip to content

Implement KPush in types

A recent commit contributed a Note (ef0ff34d) that explains why we need the dreaded KPush rule to be implemented in splitTyConApp. Without KPush there, it's possible that we can have two types t1 and t2 such that t1 eqType t2 and yet they respond differently to splitTyConApp: t1 = (T |> co1) (a |> co2) and t2 = T a. Both t1 and t2 are well-kinded and can have the same kind. But one is a TyConApp and one is an AppTy. (Actually, looking at this, perhaps the magic will be in mkAppTy, not splitTyConApp.) But I have to look closer.

This ticket serves as a reminder to do so.

Trac metadata
Trac field Value
Version
Type Task
TypeOfFailure OtherFailure
Priority high
Resolution Unresolved
Component Compiler
Test case
Differential revisions
BlockedBy
Related
Blocking
CC
Operating system
Architecture
Edited by Matthew Pickering
To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information