{-# LANGUAGE NamedFieldPuns #-} {-# LANGUAGE RecordWildCards #-} foo x y = Foo { x, y } bar x y z = Bar { x, y, z, .. } baz = Baz { .. }