Designing Functions That Consume Two Complex Inputs

  • consider currying, exploit symmetry, or exhaust cases