кэширование вычислений в ФЯП
От: Философ Ад http://vk.com/id10256428
Дата: 01.03.13 06:13
Оценка:
Будоражит мой ум один вопросик.
Как в ФЯП осуществляется кэширование вычисленных значений, т.е. то, что в императивных ЯП я делаю вот так:


private SomeType m_CalculatedValue;

public SomeType GetValue ()
{
         if (m_CalculatedValue == null)
            m_CalculatedValue = CalculateValue();

         return m_CalculatedValue;
}


более интересный пример, когда значение устаревает


private DateTime m_TimeValue;
private SomeType m_CalculatedValue;

public SomeType GetValue ()
{
         if (m_CalculatedValue == null)
            {
               m_CalculatedValue = CalculateValue();
               m_TimeValue = DateTime.Now;
            }
         
         var elapsedTime = DateTime.Now - m_TimeValue;
         if (elapsedTime > MaxAge)
            {
               m_CalculatedValue = CalculateValue();
               m_TimeValue = DateTime.Now;
            }
         return m_CalculatedValue;
}
Всё сказанное выше — личное мнение, если не указано обратное.
Re: кэширование вычислений в ФЯП
От: samius Япония http://sams-tricks.blogspot.com
Дата: 01.03.13 06:27
Оценка: +2
Здравствуйте, Философ, Вы писали:

Ф>Будоражит мой ум один вопросик.

Ф>Как в ФЯП осуществляется кэширование вычисленных значений, т.е. то, что в императивных ЯП я делаю вот так:
У ленивых ФЯП все в крови, у активных (eager) есть специальные штуки типа lazy вычислений.

Ф>более интересный пример, когда значение устаревает

А когда значение устаревает — это уже не ФЯП а императив. Т.е. речь уже как минимум о гибриде, в котором не стесняются императивных решений.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.