compose.hs