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