Будоражит мой ум один вопросик.
Как в ФЯП осуществляется кэширование вычисленных значений, т.е. то, что в императивных ЯП я делаю вот так:
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;
}
Здравствуйте, Философ, Вы писали:
Ф>Будоражит мой ум один вопросик.
Ф>Как в ФЯП осуществляется кэширование вычисленных значений, т.е. то, что в императивных ЯП я делаю вот так:
У ленивых ФЯП все в крови, у активных (eager) есть специальные штуки типа
lazy вычислений.
Ф>более интересный пример, когда значение устаревает
А когда значение устаревает — это уже не ФЯП а императив. Т.е. речь уже как минимум о гибриде, в котором не стесняются императивных решений.