Yes you are going in the right direction. You can make a function to transform Roof
to NRoof
given the status.
transform :: Status -> Roof -> NRoof
transform s r = NRoof r s
Then you can just map this function over the list of roofs you have in the house.
h2n :: House -> NHouse
h2n (House w f) = NHouse $
map (transform Working) w ++
map (transform Finished) f
In one line this can be written as
h2n (House w f) = NHouse $ map (flip NRoof Working) w ++ map (flip NRoof Finished) f