data Gangarone = GangaroneA | GangaroneB

data Sarrapone = Mksarrapone Int

data Purpurone = Mkpurpurone Gangarone Sarrapone

data Loffione = MkloffFromGang Gangarone | MkloffFromSarr Sarrapone | MkloffFromPurp [Purpurone]

;;=====================================

howmanyGA (MkloffFromGang GangaroneA) = 1

howmanyGA (MkloffFromGang GangaroneB) = 0

howmanyGA (MkloffFromSarr sarr) = 0

howmanyGA (MkloffFromPurp []) = 0

howmanyGA (MkloffFromPurp ((Mkpurpurone GangaroneA sarr):purps)) = 1 + howmanyGA (MkloffFromPurp purps)

howmanyGA (MkloffFromPurp ((Mkpurpurone GangaroneB sarr):purps)) =  howmanyGA (MkloffFromPurp purps)

;;======================================= test:

sarr1 = Mksarrapone 3
sarr2 = Mksarrapone 5


purp1 = Mkpurpurone GangaroneA sarr1
purp2 = Mkpurpurone GangaroneB sarr2

loff1 =  MkloffFromGang GangaroneB
loff2 =  MkloffFromSarr sarr2
loff3 =  MkloffFromPurp [purp1,purp2,purp1]
