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