type LatLon = Lat | Lon
type Msg
= UpdateField LatLon Float
| ...
Is really just a nested version of:
type Msg
= UpdateLat Float
| UpdateLon Float
| ...
BTW, there is a technique by which data models in Elm can be simplified by math. A custom type behaves like + (plus), and record types behave like * (multiplication).
latlon = lat + lon
msg = latlon * float + x
msg = lat * float + lon * float + x