There’s more code in this solution than the original although to me car_park_state is clearer since you can tell what it’s doing just by glancing at the code.

I’m not sure which of these approaches is considered idiomatic Haskell but my feeling is that it’s probably the former since it’s more concise.

On the other hand, the value of named fields goes up as the total number of parameters in a data types increases since people will find it increasingly difficult to remember which parameter is in each position.