Как реализовать мемоизацию на чисто функциональных языках? - PullRequest
4 голосов
/ 03 октября 2019

Одним из преимуществ чистых функций является то, что их входные данные полностью определяют их выходные данные, позволяя кэшировать результат для последующего использования. Тем не менее, я не вижу, как это можно реализовать без:

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

Каким образом memoize обычно реализуется на чисто функциональных языках?

...