Я недавно изучил Haskell и пытаюсь по возможности перенести чистый функциональный стиль в другой код. Важным аспектом этого является обработка всех переменных как неизменяемых, то есть констант. Для этого многие вычисления, которые могут быть реализованы с использованием циклов в императивном стиле, должны выполняться с использованием рекурсии, что обычно приводит к потере памяти из-за выделения нового кадра стека для каждого вызова функции. Однако в особом случае хвостового вызова (когда возвращаемое значение вызываемой функции немедленно возвращается вызывающей стороне), это наказание можно обойти с помощью процесса, называемого оптимизацией хвостового вызова (в одном методе это можно сделать с помощью по сути заменяя вызов на jmp после правильной настройки стека). Выполняет ли MATLAB совокупную стоимость владения по умолчанию или есть способ сообщить об этом?