Простой способ сломать фолд

Мне нужно выйти из фолдла. Вот фиктивный пример того, как выйти из складки, когда я подсчитываю сумму значений в списке и встречаю слишком большое значение (например, 10)

   L = [1,2,3,4,10,5,6,7],

   Res = 
      try
         lists:foldl(
            fun(I, Value) ->
               if (I < 10) ->
                  Value + I;
               true ->
                  throw({too_big_value, Value})
               end
            end,
            0, L)
      catch
         throw:{too_big_value, Value} -> Value
      end,

   Res.

Я знаю, что этот пример является искусственным, но есть ли какой-нибудь хороший способ разорвать складку (я знаю эта складка всегда сканирует всю структуру)?

Обратите внимание, что мне нужно получить правильные данные, даже если я сломаюсь. В этом случае я должен получить данные из предыдущей итерации (как это было сделано в моем примере).

6
задан ravnur 7 December 2011 в 08:44
поделиться