Functional bowling kata attempting to use types to make illegal states unrepresentable