On the importance of partial defaults for ergonomic high-level APIs