Обратите внимание, что вы не превращаете Map
в функцию. Вы превращаете функцию (а именно Map.lookup
) в другую функцию. Haskell программирование - это превращение функций в другие функции, поэтому если бы это было неэффективно, у всех нас было бы много проблем!
Короче говоря, с funcFromMap
нет ничего плохого (за исключением того, что уже существует как функция (!)
, как указывало @chi), и нет причин, по которым она должна быть неэффективной.
Во-первых, убедитесь, что вы читаете «отдельный» столбец вместо «унаследованного» столбец в выводе профиля. «Индивидуальный» столбец показывает время, фактически потраченное на саму функцию.
Если в «индивидуальном» столбце действительно указано 40%, то получается, что lookup
встроен в ваш funcFromMap
, и по какой-то причине фактические поиски на карте очень дороги в вашем приложении. Я думаю, что нам нужно увидеть минимальный пример, иллюстрирующий проблему, чтобы сказать, почему.