I\'m writing some parser code, which involves a parameterized type:
data Power i = Power1 { charges :: i } | Power2