Итак, я почти 20 лет не занимался функциональным программированием, когда мы не продвинулись дальше, чем написание факториалов и выдумок, поэтому я действительно обращаюсь к сообществу за помощью в поискерешение.
Моя проблема заключается в следующем:
"Учитывая группу торговых объектов, я хочу найти все комбинации сделок, которые равны нулю +/- некоторый допуск."
Мой стартовый номер на десять:
let NettedOutTrades trades tolerance = ...
Давайте предположим, что моей отправной точкой является ранее построенный массив кортежей (trade, value).То, что я хочу вернуть, это массив (или список, что угодно) массивов сделок, которые выходят из сети.Таким образом:
let result = NettedOutTrades [| (t1, -10); (t2, 6); (t3, 6); (t4; 5) |] 1
приведет к:
[|
[| t1; t2; t4 |]
[| t1; t3; t4 |]
|]
Я думаю, что этого можно достичь с помощью хвостовой рекурсивной конструкции, используя два аккумулятора - один для результатов и один длясумма торговых значений.Но как все это сложить ...?
Я уверен, что мог бы выбить что-то процедурное, используя c #, но это просто не похоже на подходящий инструмент для работы - я убежден, что естьбудет элегантным, лаконичным, эффективным решением с использованием функциональной парадигмы ... Я просто недостаточно практичен, чтобы идентифицировать его в настоящее время!