Я пытаюсь реорганизовать этот бит кода, чтобы избежать необходимости передавать одни и те же операторы через несколько функций.
Программа, которую я пишу, использует несколько операторов для передачи на верхнем уровне, чтобы повторно использовать код на нижних уровнях.Упрощенный пример шаблона, который я использую:
add' = higherOrder (+)
subtract' = higherOrder (-)
higherOrder operator a b c d = d + someLowerFunction operator a b c
someLowerFunction operator a b c = c + someEvenLowerFunction a b operator
someEvenLowerFunction a b operator = operator a b
, где должны быть вызваны следующие полезные функции: add'
и subtract'
и higherOrder
, someLowerFunction
и someEvenLowerFunction
просто для дедупликации кода, который является общим для двух открытых функций.
Есть ли какой-нибудь способ сохранить преимущества этого кода (а именно, что higherOrder
, someLowerFunction
и someEvenLowerFunction
можно использовать повторно), не пропуская operator
снова и снова?Я пытался проявить творческий подход к алгебраическим типам данных, чтобы добиться этого, но пока не получил хороших результатов.