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]