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

Возможные оптимизации в Haskell, которые еще не реализованы в GHC?

Таким образом, чисто функциональные языки имеют свой собственный класс потенциалов из-за четкого разделения между чистым и нечистым кодом. Я видел несколько функций, которые несколько проще реализовать в Haskell, например Вложенные данные Parallelism или Stream Fusion.

Мой вопрос: какие другие улучшения/оптимизации, которые более или менее уникальны для Haskell с точки зрения выполнимости/простоты, но еще не реализованы? (Я в основном забочусь о GHC, но также люблю слышать о других)

4b9b3361

Ответ 1

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

В принципе, суперкомпиляция выполняет как можно большую часть программы во время компиляции. Он, естественно, включает в себя инкрустацию, обезлесение, специализацию и любое количество других методов. Ранние экспериментальные результаты были многообещающими, но это очень дорогой процесс. Трудно понять, что это практическая оптимизация, но концепция смехотворно удивительна.

Ответ 2

Еще одна проблема, которую SPJ заявляет в своей статье о модульной суперкомпиляции, - это объединение суперкомпиляции с распаковкой. Возможности для распаковки в суперкомпилированной программе значительно сокращены. Это приводит к снижению производительности по сравнению с неоптимизированной программой, прошедшей через GHC strict-analyzer/unboxer. См. http://research.microsoft.com/en-us/um/people/simonpj/papers/supercompilation/