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