Подтвердить что ты не робот

Есть ли время выполнения, связанное с классами?

Название в значительной степени подводит итог моему вопросу: существует ли время выполнения, связанное с классами Haskell, или это только одна из этих вещей (например, типы phantom) без каких-либо последствий выполнения?

4b9b3361

Ответ 1

Требуется, чтобы класс типа был похож на передачу дополнительного аргумента функции, содержащей члены класса типа, в качестве структуры данных, поскольку за кулисами, которые он запускает в GHC.

Это говорит о том, что GHC очень хорош в разработке и специализировании кода, который использует классы типов с той точкой, где это не проблема, с -O2 очень большой процент из них просто исчезает, но даже без такого уровня оптимизации, проходящего через аргументы довольно дешево.

Таким образом, накладные расходы более чем типа phantom или нового типа, но он не очень высок.

В стороне, накладные расходы в других компиляторах могут различаться. например JHC эффективно выполняет анализ случаев для конструкторов типов, используя ограниченную форму зависимых типов, поэтому вы платите за количество переменных с ограниченным типом, а не за количество ограничений при работе в JHC.