У меня есть постоянное объявление в Haskell - могу ли я заставить это оценивать раньше времени? Я вижу некоторый код, который выглядит примерно так:
myList = [(a, b), (c, d)]
...
map (f . fst) myList
требуется время в вызове fst при его профилировании (у него есть 168M-вызовы). Бинарное представление myList довольно мало и может быть, например, скопировано в глобальную память [если это была программа C]. Я компилирую с -O3 -optc-O3, конечно.
Большое спасибо!
Создание экземпляров Lift для пользовательского типа
Любое выражение, указанное в вызове lift в ответе sclv, должно быть экземпляром Lift. Там есть библиотека с именем th-lift, которая будет генерировать экземпляры Lift для пользовательских типов данных. См. Этот пакет документация.