Конструкция GHC основана на чем-то, называемом STG, что означает «бесхребетная машина G -без тегов».
Теперь машина G -, по-видимому, является сокращением от «машины сокращения графов», которая определяет, как реализуется лень. Невычисленные переходы хранятся в виде дерева выражений, и выполнение программы включает приведение их к нормальной форме. (Дерево является ациклическим графом, но повсеместная рекурсия Хаскеля означает, что выражения Хаскеля образуют общие графы , следовательно, граф -редукция, а не дерево -.)
Что менее ясно, так это термины «бесхребетный» и «бесхребетный».
Я думаю , что «мягкость» относится к тому факту, что приложения-функции не имеют «хребта» из узлов приложения-функции. Вместо этого у вас есть объект, который называет вызываемую функцию и указывает на все ее аргументы. Это правильно?
Я думал, что «без тегов» относится к узлам конструктора, не «помеченным» идентификатором конструктора, и вместо этого выражения case -разрешаются с использованием инструкции перехода. Но теперь я не уверен, что это правильно. Вместо этого это, кажется, относится к тому факту, что узлы не помечены своим состоянием оценки. Кто-нибудь может пояснить, какая (, если вообще ), из этих интерпретаций верна?