moduleYhc.Core.Internal.PlaywhereimportControl.MonadclassPlayawheregetChildren::a->[a]setChildren::a->[a]->aallChildren::Playa=>a->[a]allChildrenx=x:concatMapallChildren(getChildrenx)-- bottom up mappingmapUnder::Playa=>(a->a)->a->amapUnderfx=f$setChildrenx$map(mapUnderf)$getChildrenxmapUnderM::(Monadm,Playa)=>(a->ma)->a->mamapUnderMfx=f=<<(liftM(setChildrenx)$mapM(mapUnderMf)$getChildrenx)-- top down mappingmapOver::Playa=>(a->a)->a->amapOverfx=setChildrenx2$map(mapOverf)$getChildrenx2wherex2=fx